Python实现字符串连续0最大计数功能代码返回0问题排查
代码问题排查及修正
你的代码存在3处核心逻辑错误,直接导致返回结果不符合预期:
- 赋值逻辑颠倒:遇到1比对当前计数和历史最大值时,你写的
zeros = cache是错误的,应该是把更大的当前连续0计数赋值给保存最大值的cache,即改为cache = zeros。 - return语句缩进错误:当前return写在for循环内部,函数会在第一次循环结束后直接返回初始值0,不会完成整个字符串的遍历。
- 计数重置逻辑错误:首先zeros置0的操作放在了
if zeros > cache的判断分支内,只有当前连续0数量超过历史最大值时才会重置计数,不符合逻辑;其次如果字符串末尾是连续0,循环结束后没有做最终比对,会漏掉最后一段的连续0统计。
修正后的可用代码如下:
def consecutive_zeros(string): zeros = 0 cache = 0 # 直接遍历字符更简洁,不需要通过索引取值 for elem in string: if elem == "0": zeros += 1 else: if zeros > cache: cache = zeros # 只要遇到非0字符就重置当前计数 zeros = 0 # 补充处理字符串末尾是连续0的情况 if zeros > cache: cache = zeros return cache
执行print(consecutive_zeros("0100100001"))即可得到预期结果4。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

