前言:
而今你们对“c语言如何统计各类字符个数”大概比较注重,姐妹们都需要剖析一些“c语言如何统计各类字符个数”的相关内容。那么小编同时在网络上汇集了一些对于“c语言如何统计各类字符个数””的相关知识,希望各位老铁们能喜欢,咱们快快来了解一下吧!【题目描述】
给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。
【输入】
输入包含一行,一个字符串,长度不超过1000。
【输出】
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
【输入样例】
abbccc【输出样例】
c 3解题思路
此题比较简单,是排序算法的入门题。a-z总共有26个字母,所以我们可以声明一个a[26]的数组,a[0]存储a出现的次数,a[1]存储b出现的次数,依次类推,a[25]存储z出现的次数。然后遍历字符串,将对应位的值+1。这里有个小技巧,可以通过一个index值记录出现最多次数字母的索引值,在遍历过程中,对其进行赋值,详细见代码中的注释。
参考答案
#include "iostream"using namespace std;int main(){ //创建数组,存储每个字母出现的次数(a存在索引为0的位置,b存储在1的位置,以此类推,z存储在25的位置) int a[26] = {}; string c; cin>>c; int len = c.length(); //出现最多次数字母所在的数组索引位置 int index = 0; for(int i=0;i<len;i++){ //字母出现次数+1 a[c[i]-'a']++; //如果当前字母出现次数>已知的最多次数index位置的字母出现次数,则将index赋值为当前字母在a中的索引值 //或者如果当前字母出现次数=已知的最多次数index位置的字母出现次数,且当前字母在a中的索引值小于index的值,同样需要将index赋值为当前字母在a中的索引值(即取ascii码最小的那一个字符) if(a[c[i]-'a'] > a[index] || (a[c[i]-'a']==a[index] && c[i]-'a'<index)){ index = c[i] - 'a'; } } //输出出现最多的字符和出现的次数 printf("%c %d",'a'+index,a[index]); return 0;}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。