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

Pythonで2つの文字列の最大のマージを見つけるプログラム


2つの文字列sとtがあるとします。次の方法でmergeという文字列を作成します。sまたはtのいずれかが空でないときに、次のオプションのいずれかを選択します-

  • sが空でない場合は、sの最初の文字を追加してマージし、sから削除します。

  • tが空でない場合は、tの最初の文字を追加してマージし、tから削除します。

最後に、形成できる辞書式順序で最大のマージを見つける必要があります。

したがって、入力がs ="zxyxx" t ="yzxxx"の場合、出力は "zyzxyxxxxx"

になります。

これを解決するには、次の手順に従います-

  • a:=0、b:=0

  • マージ:=空白の文字列

  • W1:=sのサイズ

  • W2:=tのサイズ

  • a

    • インデックスaから終了までのsのサブストリング>インデックスbから終了までのtのサブストリングの場合

      • マージ:=連結連結s [a]

        をマージ
      • a:=a + 1

    • それ以外の場合

      • マージ:=連結連結t [b]

        をマージ
      • b:=b + 1

  • マージ連結(インデックスaから終了までのsのサブストリング)連結(インデックスbから終了までのtのサブストリング)を返す

理解を深めるために、次の実装を見てみましょう-

def solve(s, t):
   a = b = 0
   merge = ""

   W1 = len(s)
   W2 = len(t)
   while a < W1 and b < W2:
      if s[a:] > t[b:]:
         merge += s[a]
         a += 1
      else:
         merge += t[b]
         b += 1

   return merge + s[a:] + t[b:]

s = "zxyxx"
t = "yzxxx"
print(solve(s, t))

入力

"zxyxx", "yzxxx"

出力

zyzxyxxxxx

  1. いいえが2の累乗であるかどうかを調べるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数nが与えられた場合、与えられた数が2の累乗であるかどうかを確認する必要があります。 アプローチ 入力数を2で割り続けます。つまり、=n/2を繰り返します。 各反復で、n%2がゼロ以外になり、nが1でない場合、nは2の累乗ではないことを確認します。 nが1になると、2の累乗になります。 以下の実装を見てみましょう- 例 def isPowerOfTwo(n):    if (n == 0):       retur

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element