首页 >后端开发 >C++ >一个字符串中字符的频率总和在另一个字符串中

一个字符串中字符的频率总和在另一个字符串中

王林
王林转载
2023-09-01 15:37:13718浏览

一个字符串中字符的频率总和在另一个字符串中

在本文中,我们将探讨与 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删除