1

Python で

s= "ABCC"
n = len(s)
sorted(set([s[a:b] for a in range(n) for b in range(a+1,n+2)])

繰り返しなしでアルファベット順にソートされたサブ文字列が得られます

['A', 'AB', 'ABC', 'ABCC', 'B', 'BC', 'BCC', 'C', 'CC']

部分文字列の長さでさらに並べ替えるにはどうすればよいですか。

['A', 'B', 'C', 'AB', 'BC', 'CC', 'ABC', 'BCC', 'ABCC']
4

2 に答える 2

3

単純、

sorted(set(s[a:b] for a in range(n) for b in range(a+1,n+1)),
       key=lambda x:(len(x),x))

これにより、比較が行われるキーが作成されます。まず、文字列の長さを比較して順序を決定します。文字列の長さが同じ場合、タイ ブレーカーは文字列の内容です。

于 2013-02-05T15:19:05.623 に答える
2

これがあなたの解決策です:

s= "ABCC"
n = len(s)
sorted(sorted(set([s[a:b] for a in range(n) for b in range(a+1,n+2)])),key=len)
于 2013-02-05T15:23:29.517 に答える