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

新手求助:统计字符串字母出现次数并返回最高频字符

解决方案(不调用额外库)

先给你指出现有代码的问题:

  • 统计次数的代码:只在统计字符串第一个字符的出现次数,没有遍历所有不同字母来统计,没法得到每个字母的次数。
  • 找最大值的代码:你现在是在比较字符本身的ASCII大小(比如'z'比'a'大),根本没用到统计出来的次数,逻辑完全不对。

下面是不调用任何库的简单实现,分两步走:

1. 统计每个字母的出现次数

用一个长度为26的数组(对应a-z共26个小写字母)来存每个字母的次数。如果遇到大写字母,手动转成小写,然后计算对应数组的索引:字符 - 'a',比如'a'-'a'=0对应数组第0位,'b'-'a'=1对应第1位,以此类推。

2. 找出次数最多的字母

遍历次数数组,记录最大的次数值和对应的索引,最后把索引转成对应的字符(索引 + 'a')。

完整代码示例

using System;

class Program
{
    static void Main()
    {
        string s = "HelloWorldProgramming";
        char mostFrequent = GetMostFrequentLetter(s);
        Console.WriteLine($"出现次数最多的字母是:{mostFrequent}");
    }

    static char GetMostFrequentLetter(string s)
    {
        // 初始化26个位置的数组,存a-z的出现次数,初始值都是0
        int[] countArray = new int[26];

        // 遍历字符串每个字符,统计次数
        for (int i = 0; i < s.Length; i++)
        {
            char c = s[i];
            // 手动将大写字母转小写(ASCII中大写比小写小32)
            if (c >= 'A' && c <= 'Z')
            {
                c = (char)(c + 32);
            }
            // 只统计小写字母,忽略非字母字符(不需要的话可以删除这个判断)
            if (c >= 'a' && c <= 'z')
            {
                int index = c - 'a';
                countArray[index]++;
            }
        }

        // 找出次数最多的字母
        int maxCount = 0;
        char result = 'a'; // 默认初始值
        for (int i = 0; i < countArray.Length; i++)
        {
            if (countArray[i] > maxCount)
            {
                maxCount = countArray[i];
                result = (char)(i + 'a');
            }
        }

        return result;
    }
}

代码说明

  • 统计部分:通过判断字符范围手动处理大小写转换,确保所有字母统一按小写统计,同时可选择忽略非字母字符。
  • 找最大值部分:遍历次数数组,每次遇到更大的次数就更新记录值。如果有多个字母次数相同,会返回最先遇到的那个(比如a和b都出现5次时返回a)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:01:12