Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ kiểm tra có thể làm hai chuỗi bằng nhau bằng 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. 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