Maison > Article > développement back-end > La somme des fréquences des caractères dans une chaîne dans une autre chaîne
Dans cet article, nous explorerons un problème intéressant lié aux opérations sur les chaînes en C++. L'énoncé du problème est "la somme des fréquences avec lesquelles les caractères d'une chaîne apparaissent dans une autre chaîne". Cette question offre une excellente opportunité d’améliorer votre compréhension de la manipulation de chaînes, des calculs de fréquence de caractères et des concepts de mappage en C++.
Étant donné deux chaînes, la tâche consiste à trouver la somme des fréquences d'occurrence des caractères de la première chaîne dans la deuxième chaîne.
Pour résoudre ce problème, nous créons d'abord une carte de fréquence pour les deux chaînes à l'aide d'une carte de hachage. Un tracé de fréquence est une carte de chaque caractère d'une chaîne avec le nombre de ce caractère dans la chaîne. Pour cela nous utiliserons STL unordered_map. Après avoir créé le tracé de fréquence, nous parcourons le tracé de fréquence de la première chaîne et pour chaque caractère également présent dans la deuxième chaîne, nous ajoutons sa fréquence à notre somme.
C'est le code C++ qui implémente cette solution -
#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
Considérons les chaînes "hello" et "world".
Lorsque nous transmettons ces chaînes à la fonction sumOfFrequencies, elle crée d'abord une carte de fréquence pour les deux chaînes. Pour "hello", le mappage de fréquences est {'h':1, 'e':1, 'l':2, 'o':1}, et pour "world", le mappage de fréquences est {'w' : 1, 'o':1, 'r':1, 'l':1, 'd':1}.
La fonction parcourt ensuite la carte de fréquence de "hello" et pour chaque caractère qui apparaît également dans "world", elle ajoute sa fréquence à la somme. Les caractères communs sont « o » et « l », dont les fréquences dans « bonjour » sont respectivement 1 et 2. La somme des fréquences est donc 3.
Ainsi, le résultat de ce programme sera « La somme des fréquences est : 3 ».
Cette question nous offre une excellente opportunité de comprendre et de mettre en pratique le concept de mappage de fréquence en C++. C'est une excellente question pour améliorer vos compétences en codage C++ et comprendre comment travailler avec des chaînes et des cartes pour résoudre des problèmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!