使用 C++ 查找输入字符串中出现次数最多的字符


在这个问题中,我们给定一个包含小写字符的输入字符串。我们的任务是查找输入字符串中出现次数最多的字符

如果多个值的出现频率相同,我们需要打印字典序较小的值。

让我们举个例子来理解这个问题,

输入

string = “programming”

输出

g

解决方案方法

为了找到问题的解决方案,我们需要对读取的字符串进行排序,然后遍历字符串,以便我们可以找到字符串中出现次数最多的字符。我们将使用哈希方法(哈希表方法)来解决这个问题。遍历并将每个单独的字符哈希到字符数组中称为哈希。

通常,哈希数组的大小分配为 256。但是,如果字符串仅包含范围从 0 到 127 的字符,我们可以使用大小为 128 的哈希表,以便我们可以根据字符串释放哈希表的大小。

算法

  • 读取输入字符串。

  • 创建一个函数来计算字符串中出现次数最多的字符。

  • 创建一个数组来保存单个字符的计数,并将数组初始化为 0。

  • 从输入字符串构建字符计数数组。

  • 初始化最大计数和结果。

  • 遍历字符串并维护每个其他字符的计数。

  • 最后,找到计数最多的字符并打印出来。

示例

程序说明我们解决方案的工作原理

#include <bits/stdc++.h>
using namespace std;
char findMaxOccuringChar(char str[]){
   int freq[26] = { 0 };
   int maxFreq = -1;
   char maxFreqChar;
   int len = strlen(str);
   for (int i = 0; i < len; i++)
      freq[str[i] - 'a']++;
   for (int i = 0; i < 26; i++)
      if (maxFreq < freq[i]) {
         maxFreq = freq[i];
         maxFreqChar = (char)(i + 'a');
      }
   return maxFreqChar;
}
int main(){
   char str[] = "programming";
   cout<<"Maximum occurring character of input string is "<<findMaxOccuringChar(str);
   return 0;
}

输出

Maximum occurring character of input string is g

更新于: 2022年2月11日

5K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.