Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm các ký tự khác biệt của hai chuỗi trong chương trình C++


Trong hướng dẫn này, ta sẽ học cách tìm các ký tự khác biệt từ hai chuỗi cho trước. Hãy xem ví dụ.

Đầu vào

string_one = "tutorialspoint"
string_two = "tutorialsworld"

Đầu ra

d n p w

Ta sẽ dùng hashing để giải quyết, hiệu quả hơn hai vòng lặp lồng nhau.

Hãy xem các bước giải quyết.

  • Khởi tạo hai chuỗi với giá trị ngẫu nhiên.
  • Khởi tạo map: map<char, int> chars.
  • Duyệt chuỗi thứ nhất, chèn mỗi ký tự vào map với giá trị 1.
  • Duyệt chuỗi thứ hai.
    • Kiểm tra ký tự đã có trong map chưa.
    • Nếu có, gán giá trị 0.
    • Nếu chưa, chèn ký tự với giá trị 1.
  • Duyệt map, in các ký tự có giá trị 1.

Ví dụ

Xem mã dưới đây:

#include <bits/stdc++.h> #include <map> using namespace std; void findDistinctCharacters(string one, string two){    // khởi tạo sự hiện diện ký tự trong chuỗi    map<char, int> chars;    // duyệt chuỗi thứ nhất    for (int i = 0; i < one.size(); ++i){       // chèn mỗi ký tự vào map       chars.insert({one[i], 1});    }    // duyệt chuỗi thứ hai    for (int i = 0; i < two.size(); ++i){       // kiểm tra ký tự hiện tại có trong map không       if (chars.count(two[i])) {          // gán 0 cho ký tự chung          chars.find(two[i])->second = 0;       }       else {          // chèn ký tự mới          chars.insert({two[i], 1});       }    }    // in các ký tự khác biệt    for (auto item: chars){       // kiểm tra sự hiện diện       if (item.second == 1) {          // in ký tự khác biệt          cout << item.first << " ";       }    } } int main(){    string one = "tutorialspoint";    string two = "tutorialsworld";    findDistinctCharacters(one, two);    return 0; }

Đầu ra

Nếu chạy 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ó thắc mắc, hãy đề cập trong phần bình luận.