Heim > Backend-Entwicklung > C++ > Drucken Sie alle sich nicht wiederholenden Wörter in zwei vorgegebenen Sätzen aus

Drucken Sie alle sich nicht wiederholenden Wörter in zwei vorgegebenen Sätzen aus

王林
Freigeben: 2023-09-15 19:01:03
nach vorne
717 Leute haben es durchsucht

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.

Methode

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

Methode 1: Verwenden Sie ein Wörterbuch

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.

Grammatik

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;
Nach dem Login kopieren
  • Geben Sie zwei Sätze als Zeichenfolgen ein

string sentence1 = "first sentence";
string sentence2 = "second sentence";
Nach dem Login kopieren
  • 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]++;
}
Nach dem Login kopieren
  • Durchsuchen Sie das Wörterbuch und drucken Sie einzigartige Wörter aus

for (const auto& [word, frequency]: freqDict) {
   if (frequency == 1) {
      cout << word << " ";
   }
}
Nach dem Login kopieren

Algorithmus

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 von

Beispiel 1

lautet:

Beispiel 1

Dieser 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;
}
Nach dem Login kopieren

Ausgabe

a A the The
Nach dem Login kopieren

Methode 2: Sammlungen verwenden

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.

Grammatik

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"
Nach dem Login kopieren
  • Teilen Sie jeden Satz in eine Wortliste auf

words1 = sentence1.split()
words2 = sentence2.split()
Nach dem Login kopieren
  • Erstellen Sie ein Set aus diesen beiden Wortlisten

set1 = set(words1)
set2 = set(words2)
Nach dem Login kopieren
  • Finden Sie einzigartige Wörter durch die Schnittmenge von Mengen

Nonrepeating = set1.symmetric_difference(set2)
Nach dem Login kopieren
  • Drucken Sie einzigartige Wörter

for word in non-repeating:
   print(word)
Nach dem Login kopieren

Algorithmus

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 von

Beispiel 2

lautet:

Beispiel 2

In 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;
}
Nach dem Login kopieren

输出

Non-repeating words in sentence 1:
first 
Non-repeating words in sentence 2:
second
Nach dem Login kopieren

结论

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

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage