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.
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
À 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.
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;
Entrez deux phrases sous forme de chaînes
string sentence1 = "first sentence"; string sentence2 = "second sentence";
Divisez les phrases en mots et insérez-les dans le dictionnaire
istringstream iss (sentence1 + " " + sentence2); string word; while (iss >> word) { freqDict[word]++; }
Parcourez le dictionnaire et imprimez des mots uniques
for (const auto& [word, frequency]: freqDict) { if (frequency == 1) { cout << word << " "; } }
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 deCe 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; }
a A the The
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.
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"
Divisez chaque phrase en liste de mots
words1 = sentence1.split() words2 = sentence2.split()
Créez un ensemble à partir de ces deux listes de mots
set1 = set(words1) set2 = set(words2)
Trouvez des mots uniques grâce à l'intersection d'ensembles
Nonrepeating = set1.symmetric_difference(set2)
Imprimez des mots uniques
for word in non-repeating: print(word)
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 deDans 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; }
Non-repeating words in sentence 1: first Non-repeating words in sentence 2: second
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!