C++程序检查能否通过第三个字符串的交换使两个字符串相等
假设我们有三个长度相同的字符串S、T和U,长度为n。对于范围0到n-1内的每个索引i,我们必须将U[i]与S[i]或T[i]交换。因此,总共执行了n次交换操作。我们必须检查是否在执行n次操作后,我们可以使字符串S与T完全相同。
因此,如果输入类似于S = "abc";T = "bca";U = "bca",则输出为True,因为对于所有i,如果我们将U[i]与S[i]交换,它将是"bca",而T已经是"bca"。
步骤
为了解决这个问题,我们将遵循以下步骤:
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
示例
让我们看看下面的实现,以便更好地理解:
#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; }
输入
"abc", "bca", "bca"
输出
1
广告