C++实现找出字符串中出现次数最多的小写字母

本篇文章将介绍如何使用 C++ 语言实现找出给定字符串中出现次数最多的小写字母的算法。我们将提供详细的代码示例和复杂度分析,帮助您理解算法的原理和实现细节。

问题描述:

输入一个由小写字母组成的字符串(字符数量<=100),输出出现次数最多的小写字母。

注意:如果有多个小写字母出现的次数一样多,则输出ASCII码值最大的那个字母。

解法思路:

  1. 定义一个数组 count,长度为 26,用于统计每个小写字母出现的次数。
  2. 遍历输入的字符串,对于每个字符 c,如果 c 是小写字母,则将 count[c-'a'] 的值加 1。
  3. 定义变量 maxCountmaxChar,分别用于记录出现次数最多的小写字母的次数和 ASCII 码值。
  4. 遍历 count 数组,找出出现次数最多的字母,如果当前出现次数大于 maxCount,则更新 maxCountmaxChar
  5. 输出 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)。
C++实现找出字符串中出现次数最多的小写字母

原文地址: https://www.cveoy.top/t/topic/o9vF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录