Heim >Backend-Entwicklung >C++ >Drucken Sie alle sich nicht wiederholenden Wörter in zwei vorgegebenen Sätzen aus
In diesem Tutorial werden wir alle sich nicht wiederholenden Wörter in zwei vorgegebenen Sätzen identifizieren und ausdrucken. Nicht wiederholte Wörter beziehen sich auf Wörter, die nur einmal in zwei Sätzen vorkommen, das heißt, sie kommen in einem anderen Satz nicht wiederholt vor. Diese Aufgabe umfasst die Analyse eines Eingabesatzes, die Identifizierung einzelner Wörter und den Vergleich zweier Sätze, um Wörter zu finden, die nur einmal vorkommen. Die Ausgabe sollte eine Liste aller dieser Wörter sein. Diese Aufgabe kann durch verschiedene Programmiermethoden gelöst werden, beispielsweise durch die Verwendung von Schleifen, Arrays oder Wörterbüchern.
Hier gibt es zwei Möglichkeiten, alle sich nicht wiederholenden Wörter in zwei gegebenen Sätzen auszudrucken −
Methode 1: Verwenden Sie ein Wörterbuch
Methode 2: Sammlungen verwenden
Zählen Sie mithilfe eines Wörterbuchs, wie oft jedes Wort in zwei Sätzen vorkommt. Wir können dann im Wörterbuch nachschlagen und alle Wörter ausdrucken, die nur einmal vorkommen. Die Dictionary-Funktion in C++ wird normalerweise verwendet, um alle eindeutigen Wörter in zwei angegebenen Sätzen auszugeben. Die Methode beinhaltet die Verwendung einer Wörterbuch- oder Hash-Tabellen-Datenstruktur, um die Häufigkeit jedes Wortes in zwei Phrasen zu speichern. Wir können dann das Wörterbuch durchlaufen und Begriffe ausdrucken, die nur einmal vorkommen.
Hier ist die Syntax ohne den eigentlichen Code zum Drucken aller nicht doppelten Wörter in zwei gegebenen Sätzen mithilfe von Wörterbuchmethoden in C++ -
Deklarieren Sie ein Wörterbuch zum Speichern von Worthäufigkeiten
map<string, int> freqDict;
Geben Sie zwei Sätze als Zeichenfolgen ein
string sentence1 = "first sentence"; string sentence2 = "second sentence";
Teilen Sie Sätze in Wörter auf und fügen Sie sie in das Wörterbuch ein
istringstream iss (sentence1 + " " + sentence2); string word; while (iss >> word) { freqDict[word]++; }
Durchsuchen Sie das Wörterbuch und drucken Sie einzigartige Wörter aus
for (const auto& [word, frequency]: freqDict) { if (frequency == 1) { cout << word << " "; } }
In C++ ist dies ein Trick, um Wörterbuchmethoden zu verwenden, um Schritt für Schritt alle nicht doppelten Elemente in zwei angegebenen Sätzen auszugeben -
Schritt 1 – Erstellen Sie zwei Zeichenfolgen s1 und s2, die Sätze enthalten.
Schritt 2 – Deklarieren Sie eine leere ungeordnete Zuordnungszeichenfolge, int> dict, um die Häufigkeit jedes Wortes im Satz aufzuzeichnen.
Schritt 3 - Verwenden Sie die String-Stream-Klasse von C++, um die beiden Phrasen zu analysieren und Wörter zu extrahieren.
Schritt 4 – Überprüfen Sie für jedes extrahierte Wort, ob es im Wörterbuch vorkommt. Wenn ja, erhöhen Sie die Frequenz um eins. Andernfalls fügen Sie es mit der Häufigkeit 1 zum Wörterbuch hinzu.
Schritt 5 – Nachdem Sie beide Sätze verarbeitet haben, iterieren Sie das Wörterbuch und zeigen Sie alle Begriffe mit der Häufigkeit 1 an. Das sind Wörter, die in den beiden Sätzen nicht wiederholt werden.
Schritt 6 − Die zeitliche Komplexität dieser Methode beträgt O(n),
Die chinesische Übersetzung vonDieser Code verwendet eine ungeordnete Karte, um die Häufigkeit jedes Wortes in der kombinierten Phrase zu speichern. Anschließend durchläuft es die Karte und fügt jedes Wort, das nur einmal vorkommt, einem Vektor sich nicht wiederholender Wörter hinzu. Schließlich werden nicht doppelte Wörter freigegeben. Dieses Beispiel impliziert, dass die beiden Sätze fest im Programm codiert sind und nicht vom Benutzer eingegeben werden.
#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
Diese Strategie beinhaltet die Verwendung von Mengen, um Begriffe zu finden, die nur einmal in zwei Phrasen vorkommen. Wir können Begriffssätze für jede Phrase erstellen und dann die Schnittmenge dieser Sätze ermitteln. Schließlich können wir über die Schnittmenge iterieren und alle Elemente ausgeben, die nur einmal vorkommen.
Eine Sammlung ist ein assoziativer Container, der verschiedene Elemente in sortierter Reihenfolge enthält. Wir können Begriffe aus beiden Phrasen in die Sammlung einfügen und alle Duplikate werden automatisch entfernt.
Natürlich! Im Folgenden finden Sie die Syntax, die Sie in Python verwenden können, um alle sich nicht wiederholenden Wörter in zwei gegebenen Sätzen auszugeben: −
Definieren Sie zwei Sätze als Zeichenfolgen
sentence1 = "The fox jumps over dog" sentence2 = "A dog jumps over fox"
Teilen Sie jeden Satz in eine Wortliste auf
words1 = sentence1.split() words2 = sentence2.split()
Erstellen Sie ein Set aus diesen beiden Wortlisten
set1 = set(words1) set2 = set(words2)
Finden Sie einzigartige Wörter durch die Schnittmenge von Mengen
Nonrepeating = set1.symmetric_difference(set2)
Drucken Sie einzigartige Wörter
for word in non-repeating: print(word)
Befolgen Sie die nachstehenden Anweisungen, um alle nicht doppelten Wörter in zwei gegebenen Sätzen mithilfe von Aggregatfunktionen in C++ auszugeben -
Schritt 1 – Erstellen Sie zwei String-Variablen, um die beiden Sätze zu speichern.
Schritt 2 – Teilen Sie mithilfe der String-Stream-Bibliothek jeden Satz in einzelne Wörter auf und speichern Sie sie in zwei separaten Arrays.
Schritt 3 – Erstellen Sie zwei Sätze, einen für jeden Satz, um eindeutige Wörter zu speichern.
Schritt 4 – Durchlaufen Sie jedes Wortarray und fügen Sie jedes Wort in den richtigen Satz ein.
Schritt 5 – Gehen Sie jeden Satz durch und drucken Sie die nicht doppelten Wörter aus.
Die chinesische Übersetzung vonIn diesem Code verwenden wir die String-Stream-Bibliothek, um jeden Satz in einzelne Wörter aufzuteilen. Anschließend verwenden wir zwei Sammlungen, uniqueWords1 und uniqueWords2, um die eindeutigen Wörter in jedem Satz zu speichern. Schließlich durchlaufen wir jeden Satz und drucken die nicht doppelten Wörter aus.
#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
Das obige ist der detaillierte Inhalt vonDrucken Sie alle sich nicht wiederholenden Wörter in zwei vorgegebenen Sätzen aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!