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

Chương trình kiểm tra chúng ta có thể thay thế các ký tự để tạo thành một chuỗi thành chuỗi khác hay không trong C ++

Giả sử chúng ta có hai chuỗi chữ thường s và t. Bây giờ hãy xem xét một phép toán trong đó chúng ta thay thế tất cả các lần xuất hiện của một ký tự trong s bằng một ký tự khác. Nếu chúng ta có thể thực hiện thao tác này bất kỳ số lần nào, chúng ta phải kiểm tra xem s có thể được chuyển đổi thành t hay không.

Vì vậy, nếu đầu vào là s =​​"eye" t ="pip", thì đầu ra sẽ là Đúng, vì chúng ta có thể thay "e" s bằng "p" s rồi "y" bằng "i".

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một bản đồ m1 và một bản đồ m2

  • n:=kích thước của s

  • để khởi tạo i:=0, khi i

    • nếu s [i] ở m1, thì -

      • nếu m1 [s [i]] giống với t [i] thì -

        • chuyển sang lần lặp tiếp theo

      • trả về false

    • Nếu không

      • m1 [s [i]]:=t [i]

  • trả về true

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
bool solve(string s, string t) {
   map m1, m2;
   int n = s.size();
   for(int i = 0; i <n; i++){
      if(m1.count(s[i])){
         if(m1[s[i]] == t[i]) continue;
            return false;
      }
      else{
         m1[s[i]] = t[i];
      }
   }
   return true;
}
int main(){
   string s = "eye", t = "pip";
   cout << solve(s, t);
}

Đầu vào

"eye","pip"

Đầu ra

1