Ayu*_*tel 2 python sorting suffix-array suffix
我想编写一个输出后缀数组的函数。这是我到目前为止所拥有的:
def suffixArray(s):
sa = []
for i in range(len(s)):
suffix= sorted([s[i:]])
sa = [len(s)-len(suffix[i:])
return list(sa)
Run Code Online (Sandbox Code Playgroud)
这会输出一个错误,因为我认为我缺少一个附加的 if 语句,但我不太确定如何处理它。是的,我知道可能有更简单的方法来获取后缀数组,但我是 python 的初学者,我可以使用的函数很少。任何帮助表示赞赏。谢谢
这也是我希望输入和输出的示例: 输入 --> suffixArray('banana') 输出 --> [5, 3, 1, 0, 4, 2]
显然你想要每个后缀按字典顺序排序后的索引
s = 'banana'
Run Code Online (Sandbox Code Playgroud)
>>> [t[1] for t in sorted((s[i:],i) for i in range(len(s)))]
[5, 3, 1, 0, 4, 2]
Run Code Online (Sandbox Code Playgroud)
或另一种方式:
>>> sorted(range(len(s)), key=lambda i: s[i:])
[5, 3, 1, 0, 4, 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |