Trong hướng dẫn này, chúng ta sẽ học cách tìm các ký tự khác nhau từ hai chuỗi đã cho. Hãy xem một ví dụ.
Đầu vào
string_one = "tutorialspoint" string_two = "tutorialsworld"
Đầu ra
d n p w
Chúng tôi sẽ sử dụng băm để giải quyết vấn đề. Nó hiệu quả hơn việc viết hai vòng lặp lồng nhau
Hãy xem các bước để giải quyết chương trình.
-
Khởi tạo hai chuỗi với một số giá trị ngẫu nhiên.
-
Khởi tạo bản đồ dưới dạng bản đồ
ký tự. -
Lặp lại chuỗi đầu tiên và chèn từng ký tự vào bản đồ với giá trị 1.
-
Bây giờ, hãy lặp lại chuỗi thứ hai.
-
Kiểm tra xem ký tự đã có mặt hay chưa.
-
Nếu có, hãy gán 0 cho nó.
-
Nếu không có, hãy chèn ký tự có giá trị 1.
-
-
Lặp lại trên bản đồ và in các ký tự có giá trị 1.
Ví dụ
Xem mã bên dưới.
#include <bits/stdc++.h>
#include <map>
using namespace std;
void findDistinctCharacters(string one, string two){
// initializing char presence in string
map<char, int> chars;
// iterating over the first string
for (int i = 0; i < one.size(); ++i){
// inserting every character into map
chars.insert({one[i], 1});
}
// iterating over the second string
for (int i = 0; i < two.size(); ++i){
// checking whether the current char in string or not
if (chars.count(two[i])) {
// assigning 0 for common chars
chars.find(two[i])->second = 0;
}
else {
// insering new chars
chars.insert({two[i], 1});
}
}
// printing the distinct characters
for (auto item: chars){
// checking the presence
if (item.second == 1) {
// printing the distinct char
cout << item.first << " ";
}
}
}
int main(){
string one = "tutorialspoint";
string two = "tutorialsworld";
findDistinctCharacters(one, two);
return 0;
} Đầu ra
Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.
d n p w
Kết luận
Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.