首页 > 后端开发 > C++ > 正文

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

王林
发布: 2023-09-01 15:37:13
转载
681 人浏览过

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

在本文中,我们将探讨与 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
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!