这个程序是为了找出模式1(0's)1的重复次数,例如:10011001001,但是对于较大的长度值,得到运行时错误
请告诉我这个错误的解决办法
def patternCount(s):
count=0
for i in range(len(s)-1):
if s[i]=='1':
k=i
while s[k+1]=='0':
k=k+1
if s[k+1]=='1':
count+=1
return count
s = input()
result = patternCount(s)
print(result)
Tags:
与复杂的嵌套循环不同,您可以只使用现有库来查找连续的
0
组并对它们进行计数,例如使用itertools.groupby
。。。或
regular expressions
:但是请注意,您当前的程序似乎也对
empty
组0
进行计数,例如1111
将返回3
。在这种情况下,您可以使用带有0*
的正则表达式和一些lookbehind和lookahead:或者只需计算字符串中的
1
个数并减去1
,这与当前函数所做的几乎相同,只是以稍微不那么复杂的方式(假设字符串必须以1
开头和结尾):考虑到您最近的评论,下面的正则表达式应该可以工作:
(?<=1)0+(?=1)
这检查一个或多个零的组0+
前面都是(?<=1)
,后面都是(?=1)
后面的一个。然后使用re.findalland
len`来查找和计算这些组相关问题 更多 >
编程相关推荐