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

Pythonで1つのスワップで辞書式に最小の文字列を見つけるプログラム


文字列sがあるとすると、指定された文字列sの2つの文字間で最大1つのスワップを実行できる場合に、辞書式順序で最小の文字列を見つける必要があります。

したがって、入力が「zyzx」のような場合、出力は「xyzz」になります

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

  • temp:=サイズsの配列で、0で埋めます
  • m:=sのサイズ-1
  • s -1から-1の範囲サイズのiの場合、1ずつ減らします。
    • s [i]
    • m:=i
  • temp [i]:=m
  • 0からsのサイズの範囲のiについては、
    • a:=temp [i]
    • s[a]がs[i]と同じでない場合、
      • sの部分文字列を返す[インデックス0からiまで]sを連結する[a]sの部分文字列を連結する[インデックスi+1からaまで]sを連結する[i]sの部分文字列を連結する[インデックスa+1から終了まで]
  • return s
  • class Solution:
       def solve(self, s):
          temp = [0]*len(s)
          m=len(s)-1
          for i in range(len(s)-1, -1, -1):
             if s[i]<s[m]: m=i
                temp[i] = m
          for i in range(len(s)):
             a = temp[i]
             if s[a] != s[i]:
                return s[:i]+s[a]+s[i+1:a]+s[i]+s[a+1:]
          return s
    ob = Solution()
    print(ob.solve("zyzx"))

    入力

    zyzx

    出力

    xyzz

    1. Pythonで指定されたインデックスを使用して文字列をシャッフルするプログラム

      文字列sとインデックスindのリストがあり、それらは同じ長さであるとします。文字列sは、位置iの文字が最終文字列のindexes[i]に移動するようにシャッフルされます。最後の文字列を見つける必要があります。 したがって、入力がs =ktoalak ind =[0,5,1,6,2,4,3]の場合、出力は「コルカタ」になります これを解決するには、次の手順に従います- fin_str:=サイズがsと同じで、0で埋められるリスト sの各インデックスiと文字vについて、実行します fin_str [ind [i]]:=v fin_strに存在する各文字を結合し

    2. リスト内の最小数を見つけるPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal