使用 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
廣告