首頁 >後端開發 >C++ >一個字串中字元的頻率總和在另一個字串中

一個字串中字元的頻率總和在另一個字串中

王林
王林轉載
2023-09-01 15:37:13724瀏覽

一個字串中字元的頻率總和在另一個字串中

在本文中,我們將探討與 C 中的字串運算相關的一個有趣問題。問題陳述是「一個字串中的字元在另一個字串中出現的頻率總和」。本題提供了一個很好的機會來增強您對 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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除