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

Chương trình C ++ để kiểm tra, chúng ta có thể tạo hai chuỗi bằng nhau bằng cách hoán đổi từ chuỗi thứ ba

Giả sử chúng ta có ba chuỗi S, T và U cùng độ dài n. Đối với mọi chỉ mục i trong phạm vi từ 0 đến n-1, chúng ta phải hoán đổi U [i] với S [i] hoặc T [i]. Như vậy tổng cộng chúng ta đã thực hiện n thao tác hoán đổi. Chúng ta phải kiểm tra xem sau n thao tác đó, chúng ta có thể tạo chuỗi S giống hệt như chuỗi T.

Vì vậy, nếu đầu vào giống như S ="abc"; T ="bca"; U ="bca", thì đầu ra sẽ là True, vì với mọi i nếu chúng ta hoán đổi U [i] với S [i], nó sẽ là "bca", và T đã là "bca".

Các bước

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

for initialize i := 0, when S[i] is non-zero, update (increase i by 1), do:
   if S[i] is not equal to U[i] and T[i] is not equal to U[i], then:
      return false
   return 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, string U) {
   for (int i = 0; S[i]; ++i)
      if (S[i] != U[i] && T[i] != U[i])
         return false;
   return true;
}
int main() {
   string S = "abc";
   string T = "bca";
   string U = "bca";
   cout << solve(S, T, U) << endl;
}

Đầu vào

"abc", "bca", "bca"

Đầu ra

1