尝试解决这里列出的问题,我想尝试一下用正则表达式来捕获数字的二进制表示中的最大“二进制间隙”(零的链)。
我为此问题编写的函数如下:
def solution(N):
max_gap = 0
binary_N = format(N, 'b')
list = re.findall(r'1(0+)1', binary_N)
for element in list:
if len(element) > max_gap:
max_gap = len(element)
return max_gap
它的表现相当不错。但是……由于某种原因,它不能匹配10000010000000001
(66561
的二进制表示)中的第二组零。9个零不在匹配列表中,所以必须是正则表达式的问题——但我看不出来哪里有问题,因为它与给定的每个其他示例都匹配!
list = re.findall(r'1(0+)', binary_N)
。不需要消耗右侧的1
。 - Wiktor Stribiżew