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

字符串连续字母出现次数统计代码异常问题及修正咨询

修正连续字符计数的C#代码问题

你的代码在处理重复出现的非连续字符时逻辑出错,核心问题是错误地检查字符是否存在于整个列表,而非仅对比当前最后一个字符,导致后续出现的相同字符会错误累加之前的计数。

原代码的问题点

原代码中charCnt.FindIndex(c => c.Contains(ch.ToString()))会遍历整个列表查找字符,比如输入AAAAABBCCCDDDDAA时,最后两个A被检测到列表中已有A,就去修改最后一项(此时是4D),把它改成6A,完全偏离了统计连续字符的逻辑。此外,else分支仅添加字符而非计数+字符,也是一处潜在问题。

方案1:高效优化版(推荐)

直接跟踪当前字符和对应计数,使用StringBuilder提升字符串拼接性能,逻辑更清晰:

public static void GetNoofLetters()
{
    string str = "AAAAABBCCCDDDDAA";
    if (string.IsNullOrEmpty(str))
    {
        Console.WriteLine("");
        return;
    }
    
    int count = 1;
    char currentChar = str[0];
    StringBuilder result = new StringBuilder();
    
    for (int i = 1; i < str.Length; i++)
    {
        if (str[i] == currentChar)
        {
            // 当前字符和前一个相同,计数+1
            count++;
        }
        else
        {
            // 字符切换,把之前的计数和字符拼入结果
            result.Append($"{count}{currentChar}");
            currentChar = str[i];
            count = 1;
        }
    }
    // 处理最后一组未拼接的字符
    result.Append($"{count}{currentChar}");
    
    Console.WriteLine(result.ToString());
}

方案2:基于原代码修改

如果要保留原代码的List结构,只需修改判断逻辑,仅对比列表最后一个元素是否为当前字符:

public static void GetNoofLetters()
{
    string str = "AAAAABBCCCDDDDAA";
    int count = 1;
    
    char[] charVal = str.ToCharArray();
    List<string> charCnt = new List<string>();
    string concat = "";
    
    foreach (var ch in charVal)
    {
        // 仅检查列表最后一个元素是否包含当前字符(列表非空时)
        if (charCnt.Count > 0 && charCnt[charCnt.Count - 1].EndsWith(ch.ToString()))
        {
            count++;                 
            charCnt[charCnt.Count - 1] = $"{count}{ch}";
        }
        else
        {
            // 直接添加计数+字符,避免后续替换的问题
            charCnt.Add($"{count}{ch}");
            count = 1;
        } 
    }
    
    foreach (var item in charCnt)
    {
        concat += item;
    }
    
    Console.WriteLine(concat.Trim());
}

两种方案处理AAAAABBCCCDDDDAA时,都会输出正确结果5A2B3C4D2A。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:40:29