如何用递归统计字符串字符并将"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"时,执行流程:
- 初始字符串
"geugeu",前两位不是"eu",返回1 + recursionCount("eugeu") - 字符串
"eugeu",前两位是"eu",返回1 + recursionCount("geu") - 字符串
"geu",前两位不是"eu",返回1 + recursionCount("eu") - 字符串
"eu",前两位是"eu",返回1 + recursionCount("") - 空字符串返回0
累加结果:1+1+1+1=4,符合预期。
内容的提问来源于stack exchange,提问作者ScubaDivingGoldFish
相关产品推荐
相关产品推荐

