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

Pythonで指定された位置数の文字をシフトした後に最終的な文字列を取得するプログラム


小文字の文字列sと、長さがsの長さと同じであるshiftsと呼ばれる整数の別のリストがあるとします。ここで、shifts [i]の各要素は、shifts[i]の位置でsの最初のi+1文字をシフトすることを示しています。シフトが「z」を横切る場合、それは「a」にラップアップされます。シフトをsに適用した後、結果の文字列を見つける必要があります。

したがって、入力がs ="tomato" shifts =[2、5、2、3、7、4]の場合、出力は "qjcoes"になるため、最初の文字を2桁シフトした後、't 'から'v'なので、文字列は「vomato」です。その後、最初の2文字は5桁です。文字列は「atmato」になり、最終的には「qjcoes」になります。

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

  • start:=「a」のASCII
  • res:=s内の各iの(i-開始)のASCIIのリスト
  • シフトの範囲サイズがiの場合-2から0、1ずつ減少します。
    • shifts [i]:=shifts [i] + shifts [i + 1]
  • 範囲0からs-1のサイズのiの場合、do
    • c:=(res [i] + shifts [i])mod 26
    • res [i]:=ASCIIの文字(c +開始)
  • 文字resを文字列に結合して返します

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

def solve(s, shifts):
   start = ord("a")
   res = [ord(i) - start for i in s]

   for i in range(len(shifts) - 2, -1, -1):
      shifts[i] += shifts[i + 1]

   for i in range(len(s)):
      c = (res[i] + shifts[i]) % 26
      res[i] = chr(c + start)

   return "".join(res)

s = "tomato"
shifts = [2, 5, 2, 3, 7, 4]
print(solve(s, shifts))

入力

[2, 1], 3, 2

出力

qjcoes

  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. 指定された文字列のsetを使用して母音の数をカウントするPythonプログラム

    このプログラムでは、ユーザー入力文字列を指定します。この文字列の母音の数を数える必要があります。ここでは、Pythonでsetを使用します。 Setは、反復可能、変更可能で、重複する要素がない、順序付けされていないコレクションデータ型です。 例 Input str1=pythonprogram Output 3 アルゴリズム Step 1: first we use one counter variable which is used to count the vowels in the string. Step 2: creating a set of vowels. Step 3: the