C++实现描述 【背景描述】电视台筹办"神秘大冒险"综艺活动,准备让嘉宾们探访欧洲古国,获得神秘卷轴,卷轴上含有一串密语,该密语指向藏宝大门的密码。由n个大小写字母组成,需要找到密语中出现次数最多的字符以及其出现的次数,才能获得藏宝大门的密码。 【问题描述】连续输入n个大小写字母保存至数组中,找出其中出现次数最多的字符(已知出现最多的字符只有一个),输出出现次数最多的字符以及其出现的次数。 输入描述 一行,一个正整数n ( 1≤n≤100 ) ; 一行,n个大小写字母,字母之间使用空格分隔。 输出描述 一行,一个字符和一个正整数,中间使用空格分隔。 用例输入 1 10 a a a b b c d d d d 用例输出 1 d 4
时间: 2024-03-02 13:49:00 浏览: 112
可以使用哈希表来统计每个字符出现的次数,最终找到出现次数最多的字符。具体实现过程如下:
1. 输入一个正整数 n 和 n 个大小写字母,将它们保存到字符数组中。
2. 定义一个哈希表 counts,用来记录每个字符出现的次数。初始时所有元素都为 0。
3. 遍历字符数组,对于每个字符,将其作为键,在哈希表 counts 中查找对应的值,如果找到了,则将该值加 1,如果没有找到,则将其对应的键值对插入到哈希表中,初始值为 1。
4. 遍历哈希表 counts,找到值最大的键,该键就是出现次数最多的字符,最大值就是该字符出现的次数。
5. 输出结果。
下面是完整的 C++ 代码实现:
```
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n;
cin >> n;
char c[100];
for (int i = 0; i < n; i++) {
cin >> c[i];
}
unordered_map<char, int> counts;
for (int i = 0; i < n; i++) {
if (counts.find(c[i]) != counts.end()) {
counts[c[i]]++;
} else {
counts[c[i]] = 1;
}
}
char max_char = 'a';
int max_count = 0;
for (auto it = counts.begin(); it != counts.end(); it++) {
if (it->second > max_count) {
max_char = it->first;
max_count = it->second;
}
}
cout << max_char << " " << max_count << endl;
return 0;
}
```
输入样例:
```
10
a a a b b c d d d d
```
输出样例:
```
d 4
```
阅读全文