C++での2つの文字列の最大のマージ
2つの文字列「a」と「b」および文字列「merge」があると仮定します。タスクは、文字列「merge」に「a」と「b」の文字を次のように入力することです。
- 文字列'a'が空でない場合は、文字列'a'から最初の文字を削除し、文字列'merge'にコピーします。
- 文字列'b'が空でない場合は、文字列'b'から最初の文字を削除し、文字列'merge'にコピーします。
- 文字列'a'および'b'が空でない場合は、文字列'a'から最初の文字を削除し、それを文字列' merge'にコピーしてから、文字列'bから最初の文字(存在する場合)を削除します。 'そしてそれを文字列'merge'にコピーします。
- 辞書式順序で両方の文字列から文字を削除します。つまり、文字列'a'が文字列'b'より大きい場合は、文字列'a'から文字を削除してから文字列'b'を削除します。
- 文字列「merge」を返します。
例
入力-1:
a = “bacaa”b = “abcaa”
出力:
babcacaaaa
説明:
指定された文字列「a」は辞書式順序で文字列「b」よりも大きいため、最初の文字を文字列「a」、つまり「b」から抽出し、次に文字列「b」から抽出します。抽出後、文字列は「babcacaaaa」になります。
この問題を解決するためのアプローチ
この問題を解決するための再帰的アプローチは、文字列'a'と文字列'b'の各文字を抽出し、文字列'a'の文字が他の文字列より辞書式に大きいかどうかをチェックし、最後に文字列'merge'に連結することです。 。
いくつかの位置の後に各文字の部分文字列を見つけ、辞書式順序で他の文字列よりも大きい場合は「マージ」に連結します。
- 2つの入力文字列「a」と「b」を取ります。
- 再帰文字列関数concatenateLargest(string a、string b)は、入力として2つの文字列を受け取り、連結後の最大の文字列、つまり(string'a' + string'b')を返します。
- 両方の文字列が空の場合は、文字列'a'+文字列'b'を返します。
- 文字列'a'が文字列'b'以下の場合は、最初の文字を抽出し、他の文字に対して関数を再帰的に呼び出します。
- 文字列'b'が文字列'b'以下の場合は、最初の文字を抽出し、他の文字に対して関数を再帰的に呼び出します。
- 連結された文字列を返します。
例
#include <bits/stdc++.h> using namespace std; string concatenateLargest(string a, string b) { if (a.size() == 0 or b.size() == 0) { return (a + b); } if (a <= b) return b[0] + concatenateLargest(a, b.substr(1)); else return a[0] + concatenateLargest(a.substr(1), b); } int main() { string a = "bacaa"; string b = "abcaa"; cout << concatenateLargest(a, b) << endl; return 0; }
上記のコードを実行すると、次のように出力が生成されます
出力
bacabcaaaa
「bacaa」と「abcaa」の2つの文字列は、指定された問題に従ってマージすると、「bacabcaaaa」になります。
-
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”},
-
C++で2つの二分木をマージする
2つの二分木があり、一方をもう一方を覆うように配置すると、2つのツリーの一部のノードがオーバーラップし、他のノードがオーバーラップするとします。それらを新しいバイナリツリーにマージする必要があります。マージルールは、2つのノードがオーバーラップしている場合、ノード値を合計して、マージされたノードの新しい値として計算するようなものです。それ以外の場合は、空でないノードが新しいツリーのノードとして使用されます。 したがって、木が- その場合、出力は-になります これを解決するには、次の手順に従います- メソッドはmergeTrees()です。これは、2つのツリーノードn1と