首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

(小弟我的代码错在哪)输出出现次数最多的字母,请教怎样保证输入相同最多(aabb)时,结果输出a2b2而不是输出一个

2012-03-23 
(我的代码错在哪)输出出现次数最多的字母,请问怎样保证输入相同最多(aabb)时,结果输出a2b2而不是输出一个?

(我的代码错在哪)输出出现次数最多的字母,请问怎样保证输入相同最多(aabb)时,结果输出a2b2而不是输出一个?

C# code
            string s = Console.ReadLine();            char[] charArr = s.ToCharArray();            int[] frequency = new int[26];            int[] top =new int[26];//top[0]表示a,top[1]表示b            int[] topTimes=new int[26];//存储出现的次数            int maxIndex = 0;            int max = 0;            for (int i = 0; i < charArr.Length; i++)            {                if (charArr[i] >= 'a' && charArr[i] <= 'z')                {                    frequency[charArr[i] - 'a']++;                }             }            for (int j = 0; j < top.Length; j++)            {                for (int i = 0; i < frequency.Length; i++)                {                    if (frequency[i] > max)//输入aabb,如果大于号输出a,2;如果大于等于号输出b2,但是我的结果是要输出a,2;b,2;因为a,b的数量都是最多                    {                        max = frequency[i];                        maxIndex = i;                    }                }                top[j] = maxIndex;                topTimes[j] = max;                if (j != 0)                 {                    if (topTimes[j] != topTimes[j - 1]) //如果不存在相同数量的字母,则推出                        break;                }            }             Console.WriteLine("出现次数最多的是" + (char)('a' + top[0]) + ",出现的次数为" + topTimes[0]);            Console.WriteLine("比较输出是否出现重复的数:");            for (int i = 1; i < top.Length; i++)            {                if (topTimes[i] ==topTimes[i - 1])                    Console.WriteLine("出现次数最多的是" + (char)('a' + top[i]) + ",出现的次数为" + topTimes[i]);                else                    break;            }                Console.ReadLine();             }


参考了这篇文章,怎么感觉里面的getTopLettersByNum也是错误的

[解决办法]
用泛型存储不就行了吗

热点排行