Rumah >pembangunan bahagian belakang >C++ >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.
Berikut ialah dua cara untuk mencetak semua perkataan tidak berulang dalam dua ayat yang diberikan−
Kaedah 1: Gunakan kamus
Kaedah 2: Menggunakan Koleksi
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.
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 << " "; } }
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 bagiKod 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; }
a A the The
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.
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)
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 bagiDalam 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!