You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复递归统计字符串指定区间小写字母数量的错误代码

代码问题诊断&修正方案

原代码核心问题

  • 终止条件错误:内部递归函数的终止判断if count > high逻辑错误,你已经切取了区间子串s2,索引应该基于子串长度判断,同时原代码错误使用原字符串s[count]取字符,会导致索引完全错位
  • 分支逻辑缺失:当字符不符合小写字母要求时,你直接返回了当前count值,没有继续递归遍历后续字符,这就是遇到大写/空格就停止的直接原因
  • 小写判断逻辑冗余:可以直接用Python内置的str.islower()方法,自动过滤非小写字母的所有字符(包括空格、数字、符号、大写字母等)

修正后的代码

def count_lowercase(s, low, high):
    # 先做参数合法性校验,避免索引越界
    if low < 0 or high >= len(s) or low > high:
        return 0
    def countfunc(idx=0):
        # 子串遍历完就终止递归
        if idx > high - low:
            return 0
        current_char = s[low + idx]
        # 当前字符是小写就计数+1,否则+0,继续递归下一个字符
        return (1 if current_char.islower() else 0) + countfunc(idx + 1)
    return countfunc()

验证示例

测试用例:s = "aBc DeFg",low=1,high=5,对应区间字符为Bc De,小写字母是c和e,返回结果应为2:

print(count_lowercase("aBc DeFg", 1, 5))
# 输出:2

内容的提问来源于stack exchange,提问作者xander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:36:01