一、知识点
哈希表是根据关键码key
的值而直接进行访问的数据结构。
哈希表的作用是快速判断一个元素是否出现在集合里,它的核心思想是在关键码和存储位置之间建立一个确定的对应关系, 使得每个关键字key
对应一个存储位置,而这个对应关系,称之为散列函数(哈希函数)。
其实数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。
哈希表来解决问题的时候,一般选择以下三种数据结构。
- 数组
set
集合map
映射
二、思路:
数组下标与字母有一个对应关系(数组作为哈希表的使用)
// 1、持续输入多组数据
// 2、统计(记录)每个字母出现的次数
// 3、找到出现次数最大的字母(先找到最大次数,再找到对应字母)
三、代码细节:
整理思路后重写的代码(帮助理解)
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string s;
// 输入组数
while (cin >> n)
{
// 遍历每组数据
while (n--)
{
cin >> s;
// 1、记录每个字母出现的次数
//初始化每个字母出现的次数
int count[26] = {0};
for (int i = 0; i < s.size(); i++)
{
// pos为每个字母对应的下标,例如‘a’为0,‘b’为1,以此类推...
int pos = s[i] - 'a';
// 统计每个字母出现的次数
count[pos]++;
}
// 2、找到最大的出现次数,再找对应的字母
int max_cnt = 0;
char res;
// 遍历每个字母出现的次数
for (int i = 0; i < 26; i++)
{
if (count[i] > max_cnt)
{
// 更新最大次数
max_cnt = count[i];
// 更新对应字母
res = i + 'a';
}
}
cout << res << endl;
}
}
}