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

Pythonでの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'を位置'0'で分割し、文字列'a'からの出力を返します。
  • 'a
  • 連結された文字列を返します。

def concatenateLargest(a, b):
   ans = ""
   while a and b:
      if a > b:
         ans = a[0]
         a = a[1:]
      else:
         ans = b[0]
         b = b[1:]
   ans = a
   ans = b
   return ans
a = "bacaa"
b = "abcaa"
print(concatenateLargest(a, b))

上記のコードを実行すると、次のように出力が生成されます

出力

bacabcaaaa

「bacaa」と「abcaa」の2つの文字列は、指定された問題に従ってマージすると、「bacabcaaaa」になります。


  1. 2つの辞書をマージするPythonプログラム

    このチュートリアルでは、 Pythonで2つの辞書を組み合わせる方法を学習します。 。 2つの辞書をマージするいくつかの方法を見てみましょう。 update()メソッド まず、辞書の組み込みメソッド update()を確認します。 マージします。 update() メソッドはなしを返します オブジェクトであり、2つの辞書を1つに結合します。プログラムを見てみましょう。 例 ## initializing the dictionaries fruits = {"apple": 2, "orange" : 3, "tangerine"

  2. 2つのPython辞書をどのようにマージできますか?

    Python 3.5以降では、**演算子を使用して辞書を解凍し、次の構文を使用して複数の辞書を組み合わせることができます。 a = {'foo': 125} b = {'bar': "hello"} c = {**a, **b} print(c) これにより、出力が得られます: {'foo': 125, 'bar': 'hello'} これは古いバージョンではサポートされていません。ただし、次の同様の構文を使用して置き換えることができます。 a = {'foo': 125}