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