C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

3番目の文字列から交換することで2つの文字列を等しくできることを確認するC++プログラム


同じ長さnの3つのストリングS、T、およびUがあるとします。 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

  1. C++で2つのバイナリ文字列を追加するプログラム

    2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},

  2. Pythonで指定された文字列文字からk回文を作成できるかどうかを確認するプログラムはありますか?

    文字列sと別の数字kがあるとすると、sのすべての文字を使用してkpalindromesを作成できるかどうかを確認する必要があります。 したがって、入力がs =amledavmel k =2の場合、levelとmadamを作成できるため、出力はTrueになります。 これを解決するために、次の手順に従います d:=それぞれのユニークなキャラクターとその頻度を保存するマップ cnt:=0 dのキーごとに、実行します d [key]が奇数の場合、 cnt:=cnt + 1 kの場合、 Falseを返す Trueを返す 理解を深め