卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章17011本站已运行3323

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

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

在本文中,我们将探讨与 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++编码技能,并理解如何处理字符串和映射来解决问题。

卓越飞翔博客
上一篇: 使用NumPy在Python中计算给定两个向量的外积
下一篇: 在C程序中,将无线电频谱中的频段转换为代码

相关推荐

留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏