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

更新于:2022年3月3日

232 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告