Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm các ký tự không phổ biến của hai chuỗi trong Chương trình C ++

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.