洛谷题解UVA字符串题解:UVA11577 Letter Frequency
xyx404
简要题意
给出多组字符串,你需要输出每个字符串中出现次数最多的字母(小写输出),如果有多个,则按字典序输出。
输入可能包含大写字母,但是也要计入字母输出次数。
字符串中间可能有空格。
思路
因为字符串中间可能有空格,所以我们需要整行输入,使用 getlline
。
考虑使用 map
作为桶。
把字符串的字母全部放进桶中。
处理完字符串后找到出现次数最多的字母,最后按字典序输出。
代码
#include<bits/stdc++.h> using namespace std; #define LL long long #define itn int #define ull unsigned long long int T; string s; int main(){ cin>>T; getchar(); while(T--){ getline(cin,s); unordered_map<char,int>mp; for(int i=0;i<s.size();i++){ if(s[i]<='z'&&s[i]>='a')mp[s[i]]++; if(s[i]<='Z'&&s[i]>='A')mp[s[i]-'A'+'a']++; } int maxx=0; for(char i='a';i<='z';i++){ maxx=max(maxx,mp[i]); } for(char i='a';i<='z';i++){ if(mp[i]==maxx)cout<<i; } cout<<"\n"; } return 0; }
|