Giả sử chúng ta có ba chuỗi S, T và U cùng độ dài n. Với mỗi chỉ số i trong khoảng 0 đến n-1, chúng ta phải hoán đổi U[i] với S[i] hoặc T[i]. Vậy tổng cộng ta đã thực hiện n phép hoán đổi. Chúng ta phải kiểm tra xem sau n phép toán đó có thể làm chuỗi S chính xác giống T hay không.
Ví dụ, nếu đầu vào là S = "abc"; T = "bca"; U = "bca", thì đầu ra sẽ là True, vì với mọi i nếu hoán đổi U[i] với S[i], nó sẽ thành "bca", và T đã là "bca".
Các bước
Để giải quyết bài toán này, chúng ta sẽ làm theo các bước sau:
for khởi tạo i := 0, khi S[i] khác 0, cập nhật (tăng i lên 1), do: if S[i] không bằng U[i] và T[i] không bằng U[i], thì: return false return true
Ví dụ
Xem 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