2

文字列sがあり、文字列からサフィックスのセットを生成する必要があります。たとえば、abcdef配列になり[f, ef, def, cdef, bcdef, abcdef]ます。私はこれを簡単な方法で行っています:

def get_suffixes(s):
    sb_set = set()
    sb = ''
    for i in range(len(s)-1,-1,-1):
        sb = s[i] + sb
        sb_set.add(sb)

そうするためのより最適で速い方法はありますか?そのようなサフィックスを大量に生成する必要があります(文字列sは10Kの長さです)

4

2 に答える 2

3

どうset(s[a:] for a in xrange(len(s)))ですか?

(接尾辞が異なる必要があるため、セットを使用している理由はわかりませんが、それが必要だと言ったので、ここではセットの使用を維持しています。リストが必要な場合は、リスト内包表記を使用することもできます。 )

于 2012-10-04T18:53:01.580 に答える
2

リスト内包表記を使用するだけです..後でセット操作が必要なときにセットに変換します

s = "abcdef"    
suffixes = [s[i:] for i in range(1,len(s))]

見る

>>> s = "abcdef"
>>> suffixes = [s[i:] for i in range(1,len(s))]
>>> suffixes
['bcdef', 'cdef', 'def', 'ef', 'f']

また

>>> s = "abcdef"
>>> suffixes = [s[i:] for i in range(len(s))]
>>> suffixes
['abcdef','bcdef', 'cdef', 'def', 'ef', 'f']
于 2012-10-04T18:52:56.050 に答える