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

如何用递归统计字符串字符并将"eu"视为单个字符?

递归实现字符串字符统计(含"eu"特殊组合)

原代码问题分析

你的代码存在三个核心问题:

  • 基准条件错误:当字符串长度为1时,单个字符需要计数,应返回1而非0
  • 匹配"eu"后递归截取错误:匹配到"eu"时,应该跳过两个字符(从索引2开始截取),而不是只跳过1个,否则会重复处理第二个字符
  • 非"eu"情况未计数:普通单个字符需要计入总数,应返回1+递归结果,而非直接递归

正确实现代码

public static int recursionCount(String str) {
    // 基准条件:空字符串返回0
    if (str.isEmpty()) {
        return 0;
    }
    // 字符串长度>=2时,检查前两个字符是否是"eu"
    if (str.length() >= 2 && str.startsWith("eu")) {
        // 匹配到"eu",计数+1,递归处理从索引2开始的子串
        return 1 + recursionCount(str.substring(2));
    } else {
        // 单个字符,计数+1,递归处理从索引1开始的子串
        return 1 + recursionCount(str.substring(1));
    }
}

测试验证

输入"geugeu"时,执行流程:

  1. 初始字符串"geugeu",前两位不是"eu",返回1 + recursionCount("eugeu")
  2. 字符串"eugeu",前两位是"eu",返回1 + recursionCount("geu")
  3. 字符串"geu",前两位不是"eu",返回1 + recursionCount("eu")
  4. 字符串"eu",前两位是"eu",返回1 + recursionCount("")
  5. 空字符串返回0
    累加结果:1+1+1+1=4,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:10:25