龙空技术网

C++基础算法:统计字符数

陪儿学信息学奥赛 229

前言:

而今你们对“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;}

标签: #c语言如何统计各类字符个数 #c语言求一串字符的字母数字的多少