问题标题: 酷町堂:1462求解 谢谢!

0
0
已解决
马奕阳
马奕阳
中级守护
中级守护

1462   出现频次最高字母

经验值:1200

时间限制:1000毫秒

内存限制:128MB

题目描述 De**ion

在英语中,26个英文字母之间看似和谐相处,其实每个字母之间也在暗暗较劲,自己被人类使用得越频繁,说明自己越有价值。在一个字符串中(都是小写字母),找到出现频次最高的那个字母,并输出该字母及其出现的频次。

输入描述 Input De**ion

输入为一行,为一个字符串,且都是小写字母

输出描述 Output De**ion

输出为一行,为一个小写字母和一个整数,分别表示出现频次最高的小写字母及其对应的出现频次,中间用单个空格隔开。(如有多个频次相同的字母,取在字符串中最先出现的字母)

样例输入 Sample Input

abcccdeeefggg

样例输出 Sample Output

c 3

代码:

  • #include <iostream> #include <string> #include <unordered_map> using namespace std; pair<char, int> highestFrequency(string s) { unordered_map<char, int> freq; int maxFreq = 0; char maxChar = '\0'; for (char c : s) { freq[c]++; if (freq[c] > maxFreq || (freq[c] == maxFreq && c < maxChar)) { maxFreq = freq[c]; maxChar = c; } } return {maxChar, maxFreq}; } int main() { string s; getline(cin, s); // 读取整行输入 pair<char, int> result = highestFrequency(s); cout << result.first << " " << result.second << endl; return 0; }

0
0
被禁言 任熠同
任熠同
修练者
修练者

我看了一下,其实没必要写map,这样高级的东西

string一个s,遍历s,定义桶数组b,b[s[i]]++,循环外面再遍历s,求一个maxn,如果b[s[i]]>maxn,maxn=b[s[i]],同时最后的ans=s[i](ans是char)

在输出ans

0
被禁言 任熠同
任熠同
修练者
修练者

这题是你写的吗?换行都没有,是泡泡复制的吧(猜得没错的话)

我要回答