判断重复双小写字母子串并统计出现次数的代码问询
重复双字符子串统计方案(C#)
需求回顾
判断输入的纯小写字母字符串中是否存在由两个小写字母组成的重复子串,若存在则输出该子串及其出现次数;输入示例
aaabbaabb中,仅需统计aa和bb,不重复统计同一子串。
核心判断逻辑
要满足需求,代码需实现以下核心点:
- 遍历输入字符串,提取所有连续的双字符子串
- 用哈希表(如
Dictionary<string, int>)统计每个子串的出现次数,确保同一子串只被计数一次 - 过滤掉出现次数小于2的子串,仅保留重复出现的结果
- 输出时每个符合条件的子串仅展示一次及其总次数
符合需求的C#代码示例
using System; using System.Collections.Generic; class Program { static void Main() { Console.WriteLine("请输入纯小写字母字符串:"); string input = Console.ReadLine(); Dictionary<string, int> substringCounts = new Dictionary<string, int>(); // 遍历提取所有双字符子串并统计次数 for (int i = 0; i < input.Length - 1; i++) { string sub = input.Substring(i, 2); substringCounts[sub] = substringCounts.ContainsKey(sub) ? substringCounts[sub] + 1 : 1; } // 输出重复子串 bool hasDuplicates = false; Console.WriteLine("重复的双字符子串统计:"); foreach (var pair in substringCounts) { if (pair.Value >= 2) { Console.WriteLine($"{pair.Key}: {pair.Value}"); hasDuplicates = true; } } if (!hasDuplicates) { Console.WriteLine("不存在重复的双字符子串"); } } }
示例验证(输入aaabbaabb)
输入该字符串时,提取的双字符子串依次为aa、aa、ab、bb、ba、aa、ab、bb,最终统计结果为:
aa: 3次bb: 2次
完全符合需求中仅统计aa和bb的要求。
现有代码的验证与修正要点
若你有已实现的C#代码,可对照以下规则检查是否符合需求:
- 循环边界是否正确:必须以
i < input.Length - 1作为终止条件,避免Substring方法抛出索引越界异常 - 统计逻辑是否唯一:需确保同一子串仅在哈希表中保留一条记录,累计总出现次数,而非重复记录
- 过滤规则是否生效:必须排除出现次数小于2的子串,只输出重复出现的结果
- 输出是否去重:每个符合条件的子串仅输出一次,不能多次打印同一子串
若代码存在上述任一问题,需对应修正:
- 调整循环终止条件
- 改用哈希表统一统计次数
- 添加次数过滤逻辑
- 输出时遍历哈希表而非原始子串列表
内容的提问来源于stack exchange,提问作者Crazyboy123668
相关产品推荐
相关产品推荐

