C++实现找出字符串中出现次数最多的小写字母
C++实现找出字符串中出现次数最多的小写字母
本篇文章将介绍如何使用 C++ 语言实现找出给定字符串中出现次数最多的小写字母的算法。我们将提供详细的代码示例和复杂度分析,帮助您理解算法的原理和实现细节。
问题描述:
输入一个由小写字母组成的字符串(字符数量<=100),输出出现次数最多的小写字母。
注意:如果有多个小写字母出现的次数一样多,则输出ASCII码值最大的那个字母。
解法思路:
- 定义一个数组
count,长度为 26,用于统计每个小写字母出现的次数。 - 遍历输入的字符串,对于每个字符
c,如果c是小写字母,则将count[c-'a']的值加 1。 - 定义变量
maxCount和maxChar,分别用于记录出现次数最多的小写字母的次数和 ASCII 码值。 - 遍历
count数组,找出出现次数最多的字母,如果当前出现次数大于maxCount,则更新maxCount和maxChar。 - 输出
maxChar对应的小写字母。
代码实现如下:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cin >> str;
int count[26] = {0}; // 统计每个小写字母出现的次数
for (char c : str) {
if (c >= 'a' && c <= 'z') {
count[c - 'a']++;
}
}
int maxCount = 0;
char maxChar = 'a';
for (int i = 0; i < 26; i++) {
if (count[i] > maxCount) {
maxCount = count[i];
maxChar = 'a' + i;
}
}
cout << maxChar << endl;
return 0;
}
复杂度分析:
- 时间复杂度:遍历字符串的时间复杂度为 O(n),其中 n 为字符串的长度。遍历
count数组的时间复杂度为 O(26)=O(1)。因此总的时间复杂度为 O(n)。 - 空间复杂度:使用了一个大小为 26 的
count数组,因此空间复杂度为 O(26)=O(1)。
原文地址: https://www.cveoy.top/t/topic/o9vF 著作权归作者所有。请勿转载和采集!