Pythonで合成された文字列の特定のインデックスで文字を見つけるプログラム
文字列'input_str'が与えられたとします。ここで、指定された文字列から可能なすべての部分文字列を決定し、すべての部分文字列を辞書式順序で次々に別の文字列に連結するように求められます。整数値kも提供されます。私たちのタスクは、連結された文字列からインデックスkの文字を返すことです。
したがって、入力がinput_str ='pqrs'、k =6のような場合、出力はp
になります。辞書式順序で指定された文字列の部分文字列は、p、pq、pqr、pqrs、q、qr、qrs、r、rs、sです。
文字列を連結すると、ppqpqrpqrsqqrqrsrrssになります。 6桁目では、文字は「p」です。 (インデックス作成は0から始まります)。
これを解決するには、次の手順に従います-
- stk_list:=空白の文字列を含むタプルとinput_strからのすべての文字のリストを含む新しいリスト
- stk_listが空でない場合は、
- pre:=stk_listから最後の要素を削除
- temp:=stk_listから最後の要素を削除
- k
- return pre [k]
- k:=k-プレのサイズ
- input_sorted:=input_strの文字とinput_str内の位置を含むタプルを含む新しいリスト
- タプルの2番目の値に基づいてリストinput_sortedを降順で並べ替えます
- i:=0
- i
- val:=input_sorted [i、0]
- temp1:=[input_sorted [i、1]]
- j:=i + 1
- j
- temp1の最後にinput_sorted[j、1]を挿入します
- j:=j + 1
例
理解を深めるために、次の実装を見てみましょう-
def solve(input_str, k):
stk_list = [("",list(range(len(input_str))))]
while stk_list:
pre, temp = stk_list.pop()
if k < len(pre):
return pre[k]
k -= len(pre)
input_sorted = sorted([(input_str[i],i+1) for i in temp if i < len(input_str)], reverse=True)
i = 0
while i < len(input_sorted):
val = input_sorted[i][0]
temp1 = [input_sorted[i][1]]
j = i + 1
while j < len(input_sorted) and input_sorted[j][0]== val:
temp1.append(input_sorted[j][1])
j += 1
stk_list.append((pre+val, temp1))
i = j
return None
print(solve('pqrs', 6)) 入力
'pqrs', 6
出力
p
-
グラフがPythonのすべての人によってトラバース可能かどうかを確認するプログラム
0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。グラフには3種類の重みを設定でき、各重みは特定のタスクを示します。グラフをトラバースできるのは、ジャックとケーシーの2人です。エッジの重みが1の場合、ジャックはグラフをトラバースできます。重みが2の場合、ケーシーはグラフをトラバースできます。エッジの重みが3の場合、両方がグラフをトラバースできます。グラフを両方でトラバース可能にするために必要なエッジをすべて削除する必要があります。ジャックとケーシー。グラフをトラバース可能にするために削除するエッジの数を返します。トラバ
-
Pythonで指定された文字列の最初の繰り返し文字のインデックスを見つけるプログラム
文字列sがあるとすると、その中の最初の繰り返し文字のインデックスを見つける必要があります。繰り返し文字が見つからない場合は、-1を返します。 したがって、入力が「abcade」のような場合、「a」はインデックス3に再び存在するため、出力は3になります。 これを解決するには、次の手順に従います- マップ文字を定義する 0からsのサイズの範囲のiについては、 文字でs[i]の場合、 私を返す それ以外の場合、 chars [s [i]]:=chars [s [i]] + 1 戻り値-1 理解を深めるために、次の実装を見てみましょう- 例 from collections