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

王林
Lepaskan: 2023-09-15 19:01:03
ke hadapan
717 orang telah melayarinya

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;
Salin selepas log masuk
  • Masukkan dua ayat sebagai rentetan

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

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

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

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;
}
Salin selepas log masuk

Output

a A the The
Salin selepas log masuk

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"
Salin selepas log masuk
  • Pisah setiap ayat kepada senarai perkataan

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

set1 = set(words1)
set2 = set(words2)
Salin selepas log masuk
  • Cari perkataan unik melalui persilangan set

Nonrepeating = set1.symmetric_difference(set2)
Salin selepas log masuk
  • Cetak perkataan unik

for word in non-repeating:
   print(word)
Salin selepas log masuk

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;
}
Salin selepas log masuk

输出

Non-repeating words in sentence 1:
first 
Non-repeating words in sentence 2:
second
Salin selepas log masuk

结论

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

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan