在本文中,我們將探討與 C 中的字串運算相關的一個有趣問題。問題陳述是「一個字串中的字元在另一個字串中出現的頻率總和」。本題提供了一個很好的機會來增強您對 C 中字串操作、字元頻率計算和映射概念的理解。
給定兩個字串,任務是找到第一個字串中的字元在第二個字串中出現的頻率總和。
為了解決這個問題,我們首先使用雜湊映射為兩個字串建立頻率映射。頻率圖是字串中每個字元映射到字串中該字元的計數的映射。為此,我們將使用 STL unordered_map。建立頻率圖後,我們將迭代第一個字串的頻率圖,對於第二個字串中也存在的每個字符,我們將其頻率添加到我們的總和中。
這是實作這個解決方案的C 程式碼 -
#include <iostream> #include <unordered_map> #include <string> using namespace std; int sumOfFrequencies(string str1, string str2) { unordered_map<char, int> freq1, freq2; for (char c : str1) { freq1[c]++; } for (char c : str2) { freq2[c]++; } int sum = 0; for (auto& kv : freq1) { if (freq2.count(kv.first)) { sum += kv.second; } } return sum; } int main() { string str1 = "hello", str2 = "world"; cout << "The sum of frequencies is: " << sumOfFrequencies(str1, str2); return 0; }
The sum of frequencies is: 3
讓我們考慮字串 "hello" 和 "world"。
當我們將這些字串傳遞給sumOfFrequencies函數時,它首先為兩個字串建立頻率映射。對於"hello",頻率映射為{'h':1, 'e':1, 'l':2, 'o':1},對於"world",頻率映射為{'w':1, ' o':1, 'r':1, 'l':1, 'd':1}。
該函數然後遍歷“hello”的頻率映射,對於每個也出現在“world”中的字符,它將其頻率添加到總和中。共同的字元是'o'和'l',它們在“hello”中的頻率分別為1和2。因此,頻率的總和為3。
因此,程式的輸出將會是"The sum of frequencies is: 3"。
這個問題為我們提供了一個很好的機會來理解和實踐C 中的頻率映射概念。這是一個很好的問題,可以提高你的C 編碼技能,並理解如何處理字串和映射來解決問題。
以上是一個字串中字元的頻率總和在另一個字串中的詳細內容。更多資訊請關注PHP中文網其他相關文章!