使用 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告