问题描述
题目描述
给定一个只包含小写字母的字符串,统计字符串中每个字母出现的频率,并找出出现频率最高的字母,如果最高频率的字母有多个,输出字典序靠前的那个字母。
输入描述
包含多组测试数据,每组测试数据占一行。
输出描述
有多组输出,每组输出占一行。
输入示例
2
abcdeef
aabbccddeeff
输出示例
e
a
python解法
n = int(input())
for _ in range(n):
s = input()
# 创建一个 长度为26,元素都为0的列表
temp = [0] * 26
for char in s:
# 计算字符在列表中对应的索引
i = ord(char) - ord('a')
# 索引对应的值 + 1
temp[i] += 1
maxFreq = 0
maxFreqChar = -1
# 遍历列表,找到最大频率字符的索引
for i in range(26):
if temp[i] > maxFreq:
maxFreq = temp[i]
# maxFreqChar 为对应的索引
maxFreqChar = i
# 根据索引转换对应的字符
res = chr(ord('a') + maxFreqChar)
print(res)
C++解法
# include<iostream>
# include<string>
int main(){
int n; // 接收 n 行数据
std::string s; // 每行输入的字符串
while (std::cin >> n){ // 题目包含多个输入
while (n--){
std::cin >> s; // 接收输入的字符串
int count[26] = {0};
// 统计各单词出现频率
for (int i = 0; i < s.size(); i++){
count[s[i] - 'a']++;
}
// 初始化频率最大数及字符
int maxFreq = 0;
char maxFreqChar;
// 遍历寻找频率最大的字符
for (int i = 0; i < 26; i++){
if (count[i] > maxFreq){
maxFreq = count[i];
maxFreqChar = i + 'a';
}
}
std::cout << maxFreqChar << std::endl;
}
}
}