原始问题:
小明痴迷编程中的0和1,却因儿时小恶作剧惧怕警察,现需编写程序求不含“110”的最长子串长度
def longest_substring_without_110(s):
max_length = 0
current_length = 0
start = 0
for i, c in enumerate(s):
if c == '1':
if i > start and s[i-1:i+2] == '110':
start = i + 2
else:
current_length = i - start + 1
max_length = max(max_length, current_length)
else:
current_length = i - start + 1
max_length = max(max_length, current_length)
start = i + 1
return max_length
# 测试
s = "01001100101"
print(longest_substring_without_110(s)) # 输出:6
Prev:小红的完美数问题:数组中选取两元素使其乘积为完美数的方法数