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

Pythonでそのインデックスから文字cの最も近い距離を示すリストを見つけるプログラム


文字列sがあり、別の文字c、cがsに存在する必要があるとすると、sの長さと同じ長さのリストを見つける必要があります。各インデックスiについて、その値はs[i]の最も近い距離に設定されます。 c。

したがって、入力がs ="ppqppq" c ="q"の場合、出力は[2、1、0、1、1、0]

になります。

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

  • j:=sのサイズ

  • d:=[j-1] * j

  • x:=sのcのインデックス

  • 0からj-1の範囲のiの場合、実行

    • s[i]がcおよびi>xと同じである場合、

      • x:=i、ind:=1

      • 以下をループして、実行してください

        • d [x --ind]> indの場合、

          • d [x --ind]:=ind

        • それ以外の場合

          • ループから出てきます

        • ind:=ind + 1

    • d [i]:=| x --i |

  • dを返す

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

def solve(s, c):
   j = len(s)
   d = [j - 1] * j
   x = s.index(c)
   for i in range(j):
      if s[i] == c and i > x:
         x = i
         ind = 1
         while True:
            if d[x - ind] > ind:
               d[x - ind] = ind
            else:
               break
            ind += 1
      d[i] = abs(x - i)
   return d

s = "ppqppq"
c = "q"
print(solve(s, c))

入力

"ppqppq", "q"

出力

[2, 1, 0, 1, 1, 0]

  1. Pythonの文字列のリストから最長の共通プレフィックスを見つけるプログラム

    小文字の文字列のリストがあるとすると、最も長い共通プレフィックスを見つける必要があります。 したがって、入力が[antivirus、 anticlockwise、 antigravity]の場合、出力は antiになります。 これを解決するには、次の手順に従います- リストの単語をアルファベット順に並べ替える プレフィックス:=新しいリスト フラグ:=0 0から単語のサイズ[0]までの範囲のiの場合、実行 単語のjごとに、 j [i]がプレフィックスの最後の要素と同じでない場合、 プレフィックスから最後の要素を削除 フラグ:=1 ループから抜け出す フラグが1と同じ場合

  2. リストからN個の最大の要素を見つけるPythonプログラム

    整数リストが与えられた場合、私たちのタスクはリスト内で最大のN個の要素を見つけることです。 例 Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] アルゴリズム Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest value and store it in a new list. 例 def Nnumbere