怎么让网站收录网络营销的定义
请编写程序,找出一段给定文字中出现最频繁的那个英文字母。
输入格式:
输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。
输出格式:
在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。
输入样例:
This is a simple TEST. There ARE numbers and other symbols 1&2&3...........
输出样例:
e 7
这个题考察的是map的使用,需要注意的是,题目要求如果出现次数有并列,按照字母升序输出最小的,map中是自带红黑树的,会对key值自动进行排序,这样的话我们只需要找第一个最大的即可,举个例子,如果a出现7次,b出现7次,那么遍历到a的时候,如果键值大于我们设置的sum,那么就把键值赋值给sum,再遍历的时候,由于b中的7是不大于7的(只是等于),我们就找到了出现最多的那个字母
测试点二:
数字是不统计的,只统计ASCII出现的字母,所以用一个isalpha函数即可
#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
#include<deque>
#include<cctype>
#include<unordered_set>
using namespace std;
int main(){string s;getline(cin,s);map<char,int>ma;for(int i=0;i<s.size();i++){if(isalpha(s[i])){s[i]=tolower(s[i]);ma[s[i]]++;}}int sum=0;char x;for(auto it=ma.begin();it!=ma.end();it++){if(it->second>sum){sum=it->second;x=it->first;}}cout<<x<<" "<<sum;return 0;
}