PTA basic 1042 字符统计 (20 分) c++语言实现(g++)

请编写程序,找出一段给定文字中出现最频繁的那个英文字母。

输入格式:

输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。

输出格式:

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

输入样例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........
 

输出样例:

e 7


1.使用getline(cin,string)函数获取一行所有输入
2.然后逐个标记字符出现的次数,将大写字母的次数加入小写字母中,然后比较依次从a开始找出小写字母出现频率最高的字母,将最高次数存入maxTime,对应ascii下标存入maxIndex,然后输出

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 using namespace std;
 5 int main(){
 6     int maxTime{0},maxIndex{0};
 7     string str;
 8     vector<int> alpha(129,0);
 9     getline(cin, str);
10     for(int i=0;i<str.size();i++){
11         alpha[str[i]]+=1;
12     }
13     for(int i=65;i<92;i++){//65是'A'的ascii码 91是'Z'
14         alpha[i+32]+=alpha[i];
15     }
16     for(int i=95;i<122;i++){//95是'a'   121是'z'
17         if(alpha[i]>maxTime){
18             maxTime=alpha[i];
19             maxIndex=i;
20         }
21     }
22     cout << static_cast<char>(maxIndex)<< " "<< maxTime<<endl;
23     return 0;
24 }

 

posted @ 2021-05-07 00:02  keiiha  阅读(133)  评论(0编辑  收藏  举报