C++で1回削除した後に2つの文字列の1つに等しくなる文字列の数
2つの異なる文字列(たとえばs1とs2)が与えられ、タスクは、s1とs2の一意の文字を組み合わせて文字列(たとえばS)を形成し、文字列Sから1つの文字を削除した後、それが文字列を形成しているかどうかを確認することです。文字列s1またはs2に等しくなります。
例
入力- 文字列S1="utter"、文字列S2="バター";
出力- 1回の削除後に2つの文字列の1つに等しくなる文字列の数は次のとおりです。1
説明- 文字列s1とs2が与えられ、文字列Sから「バター」になります。文字列Sから文字「b」を削除すると、文字列s1に等しい「utter」になります。したがって、カウントは1になります。
入力- 文字列S1="fat"、文字列S2="ラット";
出力- 1回の削除後に2つの文字列の1つに等しくなる文字列の数は次のとおりです。2
説明- 文字列s1とs2が与えられ、文字列S、つまり「frat」を形成します。文字列Sから文字「rs」を削除すると「fat」になります。これは文字列s1と同じで、文字を削除すると'f'は文字列s2に等しい'rat'になるため、カウントは2になります。
以下のプログラムで使用されているアプローチは次のとおりです
- 2つの文字列s1とs2を宣言し、文字列s1のサイズを計算して、さらに処理するためにデータを関数に渡します。
- 可能な最大出力は2であるため、変数カウントを宣言して2に設定します。
- ループトラバーサルの開始と終了として2つの一時変数を宣言します。
- ループFORを0から文字列s1のサイズまで開始し、ループ内でs1 [i]がs2と等しくないかどうかを確認してから、startをiとして設定し、breakします
- 文字列s1のサイズが1つ小さくなるまで、iから別のループFORを開始し、ループ内でs1がs2と等しくないかどうかを確認してから、endをiとして設定して中断します
- 終了のIF値が開始よりも小さいことを確認してから、カウントを26 *(文字列s1 + 1のサイズ)に設定し、カウントを返します。
- チェックの開始が終了と等しい場合は、カウントを返します
- それ以外の場合は、ループFORをiから開始して+1を開始し、ループ内でs1[i]がs2[i-1]と等しくないかどうかを確認してから、カウントを1デクリメントして中断します
- ループFORをiから開始+1から終了まで開始し、s1[i-1]がs2[i]と等しくないかどうかを確認してから、カウントを1デクリメントして中断します
- カウントを返します。
- 結果を印刷します。
例
#include <bits/stdc++.h> using namespace std; int equal_removal(string S1, string S2, int size_S1) { int count = 2; int start; int end; for (int i = 0; i < size_S1; ++i) { if (S1[i] != S2[i]) { start = i; break; } } for (int i = size_S1 - 1; i >= 0; i--) { if (S1[i] != S2[i]) { end = i; break; } } if (end < start) { count = 26 * (size_S1 + 1); return count; } else if (start == end) { return count; } else { for (int i = start + 1; i <= end; i++) { if (S1[i] != S2[i - 1]) { count--; break; } } for (int i = start + 1; i <= end; i++) { if (S1[i - 1] != S2[i]) { count--; break; } } return count; } } int main() { string S1 = "utter"; string S2 = "butter"; int size_S1 = S1.length(); cout << "Count of strings that become equal to one of the two strings after one removal are: " << equal_removal(S1, S2, size_S1); return 0; }
上記のコードを実行すると、次の出力が生成されます-
出力
Count of strings that become equal to one of the two strings after one removal are: 1
-
C++でN回カットした後の円のピースを数えます
2D円に適用されるカットの数を表す整数Nが与えられます。各円は、円を2つに分割します。目標は、Nカット後に円の断片を見つけることです。 個数=2*いいえ。カットの 例を挙げて理解しましょう。 入力 − n =1 出力 −円の断片:2 説明 − 入力 − n =3 出力 −円の断片:6 説明 − 以下のプログラムで使用されているアプローチは次のとおりです いくつかのカットにNを使用します。 ピースを取る=1*N。 結果を印刷します。 例 #include <bits/stdc++.h> using namespace st
-
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”},