Pythonで文字列とその接尾辞の類似性を見つけるプログラム
文字列'input_str'が与えられたとします。 input_strからすべてのサフィックスを決定した場合;たとえば、文字列が「abcd」の場合、接尾辞は「abc」、「bcd」、「cd」、「d」です。ここで、input_strとすべてのサフィックスの類似性を、input_strの最長の共通プレフィックスとサフィックスの長さでチェックします。 input_strとすべてのサフィックスの類似性の合計を返す必要があります。
したがって、入力がinput_str ='tpotp'のような場合、出力は7
になります。文字列「tpotp」のすべてのサフィックスは、「tpotp」、「potp」、「otp」、「tp」、および「p」です。
すべてのサフィックスとinput_strの類似性を確認すると、-
が得られます。'tpotp' similarity 5 'potp' similarity 0 'otp' similarity 0 'tp' similarity 2 'p' similarity 0 Sum of similarities = 5 + 0 + 0 + 2 + 0 = 7.
これを解決するには、次の手順に従います-
- return_list:=input_strのサイズを含む新しいリスト
- i:=1
- p:=0
- q:=0
- r:=0
- i
- q
- return_list [i-q]> =q + p-iの場合、
- r:=q + p-i
- p:=0
- q:=0
- それ以外の場合、
- return_listの最後にreturn_list[i-q]を挿入します
- i:=i + 1
- r:=0
- q
- (i + r
- r:=r + 1
例
理解を深めるために、次の実装を見てみましょう-
def solve(input_str): return_list = [len(input_str)] i = 1 p, q = 0,0 r = 0 while i < len(input_str): if q < i < (q+p): if return_list[i-q] >= q+p-i: r = q + p - i p, q = 0, 0 else: return_list.append(return_list[i-q]) i += 1 r = 0 else: while i + r < len(input_str) and input_str[r] == input_str[i+r]: r += 1 return_list.append(r) p,q = r,i i += 1 r = 0 return sum(return_list) print(solve('tpotp'))
入力
'tpotp'
出力
5
-
Pythonのグラフでクリティカルエッジと疑似クリティカルエッジを見つけるプログラム
0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。したがって、グラフが与えられた場合、グラフMSTのクリティカルエッジと疑似クリティカルエッジを見つける必要があります。エッジを削除するとMSTの重みが増加する場合、そのエッジはクリティカルエッジと呼ばれます。疑似クリティカルエッジは、すべてではなく、すべてのグラフMSTに表示できるエッジです。グラフを入力として与えられたエッジのインデックスを見つけます。 したがって、入力が次のような場合 頂点の数が5の場合、出力は[[]、[0、1、2、3、4]]になります。指
-
最も出現する文字とその数を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力文字列が与えられた場合、最も出現する文字とその数を見つける必要があります。 アプローチ 文字列をキーとして、頻度を値として持つCounterメソッドを使用して辞書を作成します。 文字の最大出現回数、つまり値を見つけて、そのインデックスを取得します。 次に、以下の実装を見てみましょう- 例 from collections import Counter def find(input_): # dictionary &