Rumah >pembangunan bahagian belakang >C++ >Cetak semua perkataan tidak berulang dalam dua ayat yang diberikan

Cetak semua perkataan tidak berulang dalam dua ayat yang diberikan

王林
王林ke hadapan
2023-09-15 19:01:03716semak imbas

Cetak semua perkataan tidak berulang dalam dua ayat yang diberikan

Dalam tutorial ini, kami akan mengenal pasti dan mencetak semua perkataan tidak berulang dalam dua ayat yang diberikan. Perkataan tidak berulang merujuk kepada perkataan yang muncul sekali sahaja dalam dua ayat, iaitu tidak muncul berulang kali dalam ayat lain. Tugasan ini melibatkan menganalisis ayat input, mengenal pasti perkataan individu, dan membandingkan dua ayat untuk mencari perkataan yang muncul sekali sahaja. Outputnya mestilah senarai semua perkataan ini. Tugas ini boleh dicapai melalui pelbagai kaedah pengaturcaraan, seperti menggunakan gelung, tatasusunan atau kamus.

Kaedah

Berikut ialah dua cara untuk mencetak semua perkataan tidak berulang dalam dua ayat yang diberikan−

Kaedah 1: Gunakan kamus

Kaedah 2: Menggunakan Koleksi

Kaedah 1: Gunakan kamus

Menggunakan kamus, hitung bilangan kali setiap perkataan muncul dalam dua frasa. Kami kemudian boleh mencari kamus dan mencetak semua perkataan yang muncul sekali sahaja. Fungsi Kamus dalam C++ biasanya digunakan untuk mengeluarkan semua perkataan unik dalam dua ayat tertentu. Kaedah ini melibatkan penggunaan kamus atau struktur data jadual cincang untuk menyimpan kekerapan setiap perkataan dalam dua frasa. Kami kemudiannya boleh mengulangi kamus dan mencetak istilah yang muncul sekali sahaja.

Tatabahasa

Berikut ialah sintaks tanpa kod sebenar untuk mencetak semua perkataan bukan pendua dalam dua ayat yang diberikan menggunakan kaedah kamus dalam C++ -

  • Isytiharkan kamus untuk menyimpan frekuensi perkataan

map<string, int> freqDict;
  • Masukkan dua ayat sebagai rentetan

string sentence1 = "first sentence";
string sentence2 = "second sentence";
  • Pisah ayat kepada perkataan dan masukkan ke dalam kamus

istringstream iss (sentence1 + " " + sentence2);
string word;
while (iss >> word) {
   freqDict[word]++;
}
  • Gelung kamus dan cetak perkataan unik

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

Algoritma

Dalam C++, ini adalah helah untuk menggunakan kaedah kamus untuk mencetak langkah demi langkah semua item unik dalam dua ayat yang ditentukan -

Langkah 1 - Buat dua rentetan s1 dan s2 yang mengandungi ayat.

Langkah 2 - Isytiharkan rentetan peta tidak tertib kosong, int> untuk merekodkan kekerapan setiap perkataan dalam ayat.

Langkah 3 − Gunakan kelas aliran rentetan C++ untuk menghuraikan dua frasa untuk mengeluarkan perkataan.

Langkah 4 - Untuk setiap perkataan yang diekstrak, semak sama ada ia muncul dalam kamus. Jika ya, tingkatkan kekerapannya sebanyak satu. Jika tidak, tambahkannya pada kamus dengan kekerapan 1.

Langkah 5 - Selepas memproses kedua-dua ayat, ulangi kamus dan paparkan semua istilah dengan kekerapan 1. Ini adalah perkataan yang tidak diulang dalam dua ayat.

Langkah 6 − Kerumitan masa kaedah ini ialah O(n),

Terjemahan bahasa Cina bagi

Contoh 1

ialah:

Contoh 1

Kod ini menggunakan peta tidak tertib untuk menyimpan kekerapan setiap perkataan dalam frasa gabungan. Ia kemudian menggelung melalui peta, menambah setiap perkataan yang muncul sekali sahaja pada vektor perkataan tidak berulang. Akhirnya, ia menerbitkan perkataan bukan pendua. Contoh ini membayangkan bahawa dua ayat dikodkan keras ke dalam atur cara dan bukannya dimasukkan oleh pengguna.

#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;
}

Output

a A the The

Kaedah 2: Menggunakan Koleksi

Strategi ini melibatkan penggunaan set untuk mencari istilah yang muncul sekali sahaja dalam dua frasa. Kita boleh membina set istilah untuk setiap frasa dan kemudian mengenal pasti persilangan set ini. Akhir sekali, kita boleh mengulangi persimpangan dan mengeluarkan semua item yang muncul sekali sahaja.

Koleksi ialah bekas bersekutu yang menyimpan elemen berbeza dalam susunan yang disusun. Kami boleh memasukkan istilah daripada kedua-dua frasa ke dalam koleksi dan sebarang pendua akan dialih keluar secara automatik.

Tatabahasa

Sudah tentu! Berikut ialah sintaks yang boleh anda gunakan dalam Python untuk mencetak semua perkataan tidak berulang dalam dua ayat yang diberikan −

  • Takrifkan dua ayat sebagai rentetan

sentence1 = "The fox jumps over dog"
sentence2 = "A dog jumps over fox"
  • Pisah setiap ayat kepada senarai perkataan

words1 = sentence1.split()
words2 = sentence2.split()
  • Buat satu set daripada dua senarai perkataan ini

set1 = set(words1)
set2 = set(words2)
  • Cari perkataan unik melalui persilangan set

Nonrepeating = set1.symmetric_difference(set2)
  • Cetak perkataan unik

for word in non-repeating:
   print(word)

Algoritma

Ikut arahan di bawah untuk mengeluarkan semua perkataan bukan pendua dalam dua ayat yang diberikan menggunakan fungsi agregat dalam C++ -

Langkah 1 - Buat dua pembolehubah rentetan untuk menyimpan dua ayat.

Langkah 2 - Menggunakan perpustakaan aliran rentetan, bahagikan setiap ayat kepada perkataan individu dan simpannya dalam dua tatasusunan berasingan.

Langkah 3 - Buat dua set, satu untuk setiap ayat, untuk menyimpan perkataan unik.

Langkah 4 - Gelung setiap susunan perkataan dan masukkan setiap perkataan ke dalam set yang betul.

Langkah 5 - Gelung setiap set dan cetak perkataan bukan pendua.

Terjemahan bahasa Cina bagi

Contoh 2

ialah:

Contoh 2

Dalam kod ini, kami menggunakan perpustakaan aliran rentetan untuk memisahkan setiap ayat kepada perkataan yang berasingan. Kami kemudian menggunakan dua koleksi, uniqueWords1 dan uniqueWords2, untuk menyimpan perkataan unik dalam setiap ayat. Akhir sekali, kami mengulangi setiap set dan mencetak perkataan bukan pendua.

#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

结论

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

Atas ialah kandungan terperinci Cetak semua perkataan tidak berulang dalam dua ayat yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam