Maison > développement back-end > C++ > Imprimez tous les mots non répétitifs dans deux phrases données

Imprimez tous les mots non répétitifs dans deux phrases données

王林
Libérer: 2023-09-15 19:01:03
avant
718 Les gens l'ont consulté

Imprimez tous les mots non répétitifs dans deux phrases données

Dans ce tutoriel, nous identifierons et imprimerons tous les mots non répétés dans deux phrases données. Les mots non répétés font référence à des mots qui n'apparaissent qu'une seule fois dans deux phrases, c'est-à-dire qu'ils n'apparaissent pas de manière répétée dans une autre phrase. Cette tâche consiste à analyser une phrase saisie, à identifier des mots individuels et à comparer deux phrases pour trouver des mots qui n'apparaissent qu'une seule fois. Le résultat devrait être une liste de tous ces mots. Cette tâche peut être accomplie via diverses méthodes de programmation, telles que l'utilisation de boucles, de tableaux ou de dictionnaires.

Méthode

Voici deux façons d'imprimer tous les mots non répétitifs dans deux phrases données−

Méthode 1 : Utiliser un dictionnaire

Méthode 2 : Utiliser les collections

Méthode 1 : Utiliser un dictionnaire

À l’aide d’un dictionnaire, comptez le nombre de fois où chaque mot apparaît dans deux phrases. On peut alors consulter le dictionnaire et imprimer tous les mots qui n’apparaissent qu’une seule fois. La fonction Dictionnaire en C++ est généralement utilisée pour afficher tous les mots uniques dans deux phrases spécifiées. La méthode consiste à utiliser une structure de données de dictionnaire ou de table de hachage pour stocker la fréquence de chaque mot dans deux phrases. Nous pouvons ensuite parcourir le dictionnaire et imprimer des termes qui n’apparaissent qu’une seule fois.

Grammaire

Voici la syntaxe sans le code réel pour imprimer tous les mots non dupliqués dans deux phrases données en utilisant les méthodes de dictionnaire en C++ -

  • Déclarez un dictionnaire pour stocker les fréquences des mots

map<string, int> freqDict;
Copier après la connexion
  • Entrez deux phrases sous forme de chaînes

string sentence1 = "first sentence";
string sentence2 = "second sentence";
Copier après la connexion
  • Divisez les phrases en mots et insérez-les dans le dictionnaire

istringstream iss (sentence1 + " " + sentence2);
string word;
while (iss >> word) {
   freqDict[word]++;
}
Copier après la connexion
  • Parcourez le dictionnaire et imprimez des mots uniques

for (const auto& [word, frequency]: freqDict) {
   if (frequency == 1) {
      cout << word << " ";
   }
}
Copier après la connexion

Algorithme

En C++, il s'agit d'une astuce pour utiliser des méthodes de dictionnaire pour imprimer étape par étape tous les éléments uniques dans deux phrases spécifiées -

Étape 1 - Créez deux chaînes s1 et s2 contenant des phrases.

Étape 2 - Déclarez une chaîne de carte vide non ordonnée, int> pour enregistrer la fréquence de chaque mot dans la phrase.

Étape 3 - Utilisez la classe de flux de chaînes de C++ pour analyser les deux phrases afin d'extraire des mots.

Étape 4 - Pour chaque mot extrait, vérifiez s'il apparaît dans le dictionnaire. Si c’est le cas, augmentez sa fréquence de un. Sinon, ajoutez-le au dictionnaire avec la fréquence 1.

Étape 5 - Après avoir traité les deux phrases, parcourez le dictionnaire et affichez tous les termes avec la fréquence 1. Ce sont des mots qui ne sont pas répétés dans les deux phrases.

Étape 6 − La complexité temporelle de cette méthode est O(n),

La traduction chinoise de

Exemple 1

est :

Exemple 1

Ce code utilise une carte non ordonnée pour stocker la fréquence de chaque mot dans la phrase combinée. Il parcourt ensuite la carte, ajoutant chaque mot qui n'apparaît qu'une seule fois à un vecteur de mots non répétitifs. Enfin, il libère des mots non dupliqués. Cet exemple implique que les deux phrases sont codées en dur dans le programme plutôt que saisies par l'utilisateur.

#include <iostream>
#include <string>
#include <unordered_map>
#include <sstream>
#include <vector>

using namespace std;

vector<string> getNonRepeatingWords(string sentence1, string sentence2) {
   // Combine the two sentences into a single string
   string combined = sentence1 + " " + sentence2;

   // Create a map to store the frequency of each word
   unordered_map<string, int> wordFreq;

   // Use a string stream to extract each word from the combined string
   stringstream ss(combined);
   string word;
   while (ss >> word) {
      // Increment the frequency of the word in the map
      wordFreq[word]++;
   }

   // Create a vector to store the non-repeating words
   vector<string> nonRepeatingWords;
   for (auto& pair : wordFreq) {
      if (pair.second == 1) {
         nonRepeatingWords.push_back(pair.first);
      }
   }

   return nonRepeatingWords;
}
int main() {
   string sentence1 = "The quick brown fox jumps over the lazy dog";
   string sentence2 = "A quick brown dog jumps over a lazy fox";

   vector<string> nonRepeatingWords = getNonRepeatingWords(sentence1, sentence2);

   // Print the non-repeating words
   for (auto& word : nonRepeatingWords) {
      cout << word << " ";
   }
   cout << endl;

   return 0;
}
Copier après la connexion

Sortie

a A the The
Copier après la connexion

Méthode 2 : Utiliser les collections

Cette stratégie consiste à utiliser des ensembles pour trouver des termes qui n'apparaissent qu'une seule fois dans deux phrases. Nous pouvons créer des ensembles de termes pour chaque phrase, puis identifier l'intersection de ces ensembles. Enfin, nous pouvons parcourir l'intersection et afficher tous les éléments qui n'apparaissent qu'une seule fois.

Une collection est un conteneur associatif qui contient différents éléments dans un ordre trié. Nous pouvons insérer des termes des deux phrases dans la collection et tous les doublons seront automatiquement supprimés.

Grammaire

Bien sûr ! Voici la syntaxe que vous pouvez utiliser en Python pour imprimer tous les mots non répétitifs dans deux phrases données −

  • Définissez deux phrases sous forme de chaînes

sentence1 = "The fox jumps over dog"
sentence2 = "A dog jumps over fox"
Copier après la connexion
  • Divisez chaque phrase en liste de mots

words1 = sentence1.split()
words2 = sentence2.split()
Copier après la connexion
  • Créez un ensemble à partir de ces deux listes de mots

set1 = set(words1)
set2 = set(words2)
Copier après la connexion
  • Trouvez des mots uniques grâce à l'intersection d'ensembles

Nonrepeating = set1.symmetric_difference(set2)
Copier après la connexion
  • Imprimez des mots uniques

for word in non-repeating:
   print(word)
Copier après la connexion

Algorithme

Suivez les instructions ci-dessous pour afficher tous les mots non dupliqués dans deux phrases données à l'aide de fonctions d'agrégation en C++ -

Étape 1 - Créez deux variables de chaîne pour stocker les deux phrases.

Étape 2 - À l'aide de la bibliothèque de flux de chaînes, divisez chaque phrase en mots individuels et stockez-les dans deux tableaux distincts.

Étape 3 - Créez deux ensembles, un pour chaque phrase, pour stocker des mots uniques.

Étape 4 - Parcourez chaque tableau de mots et insérez chaque mot dans le bon ensemble.

Étape 5 - Parcourez chaque ensemble et imprimez les mots non dupliqués.

La traduction chinoise de

Exemple 2

est :

Exemple 2

Dans ce code, nous utilisons la bibliothèque de flux de chaînes pour diviser chaque phrase en mots séparés. Nous utilisons ensuite deux collections, uniqueWords1 et uniqueWords2, pour stocker les mots uniques dans chaque phrase. Enfin, nous parcourons chaque ensemble et imprimons les mots non dupliqués.

#include <iostream>
#include <string>
#include <sstream>
#include <set>

using namespace std;

int main() {
   string sentence1 = "This is the first sentence.";
   string sentence2 = "This is the second sentence.";
   string word;
   stringstream ss1(sentence1);
   stringstream ss2(sentence2);
   set<string> uniqueWords1;
   set<string> uniqueWords2;

   while (ss1 >> word) {
      uniqueWords1.insert(word);
   }

   while (ss2 >> word) {
      uniqueWords2.insert(word);
   }

   cout << "Non-repeating words in sentence 1:" << endl;
   for (const auto& w : uniqueWords1) {
      if (uniqueWords2.find(w) == uniqueWords2.end()) {
         cout << w << " ";
      }
   }
   cout << endl;

   cout << "Non-repeating words in sentence 2:" << endl;
   for (const auto& w : uniqueWords2) {
      if (uniqueWords1.find(w) == uniqueWords1.end()) {
         cout << w << " ";
      }
   }
   cout << endl;

   return 0;
}
Copier après la connexion

输出

Non-repeating words in sentence 1:
first 
Non-repeating words in sentence 2:
second
Copier après la connexion

结论

总之,从两个提供的句子中打印所有非重复单词的任务是通过使用各种编程方法来实现的,例如将句子分解为单个单词,利用字典来量化每个单词的频率,以及过滤掉非重复单词。生成的非重复单词集合可以报告给控制台或保存在列表或数组中以供进一步使用。这项工作对于基本的编程文本操作和数据结构操作很有帮助。

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal