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

Pythonで文字列内の最長の反復配列を見つける方法は?


defaultdictを使用して、入力文字列の各位置から始まる各サブ文字列を集計できます。 getsubsメソッドは、呼び出されるたびに小さいサブ文字列を生成するジェネレータメソッドです。

from collections import defaultdict
def getsubs(loc, s):
    substr = s[loc:]
    i = -1
    while(substr):
        yield substr
        substr = s[loc:i]
        i -= 1
def longestRepetitiveSubstring(r):
    occ = defaultdict(int)
    # tally all occurrences of all substrings
    for i in range(len(r)):
        for sub in getsubs(i,r):
            occ[sub] += 1
    # filter out all sub strings with fewer than 2 occurrences
    filtered = [k for k,v in occ.items() if v >= 2]
    if filtered:
        maxkey =  max(filtered, key=len) # Find longest string
        return maxkey
    else:
        raise ValueError("no repetitions of any substring of '%s' with 2 or more occurrences" % (r))
longestRepetitiveSubstring("hellopeople18654randomtexthellopeoplefromallaroundthe world")

出力

これにより、出力が得られます:

'hellopeople'

  1. Pythonで文字列を逆にする方法は?

    文字列のスライス演算子と範囲演算子を使用して、Pythonで文字列を逆にすることができます。例: >>> 'Hello'[::-1] ‘olleH’ >>>‘Halloween’[::-1] ‘neewollaH’ []演算子は、コロン「:」で区切った3つの数値を取ることができます。 1つ目は開始インデックス、2つ目は終了インデックス、3つ目はストライドです。ここでは、ストライドを-1として指定し、他の2つは空のままにしました。これは、最初から最後まで一度に1つずつ逆方

  2. Pythonで部分文字列が別の文字列に含まれているかどうかを確認する方法

    Pythonには、文字列が別の文字列のサブ文字列であるかどうかを検索するためのキーワード「in」があります。例 print('ello' in 'hello world')  出力 True サブストリングの最初のインデックスも必要な場合は、find(substr)を使用してインデックスを検索できます。このメソッドが-1を返す場合は、文字列に部分文字列が存在しないことを意味します。たとえば、 print("hello world".find('ello')) 出力  1 文字列「ハリーポッター:炎の