python - 后缀数组python的函数

标签 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)

这会输出一个错误,因为我想我错过了一个额外的 if 语句,但我不确定如何去做。是的,我知道可能有更简单的方法来获取后缀数组,但我是 python 的初学者,我可以使用的函数很少。任何帮助表示赞赏。谢谢

这里还有一个我希望输入和输出的示例: 输入 --> suffixArray('banana') 输出--> [5, 3, 1, 0, 4, 2]

最佳答案

显然你想要每个后缀在按字典顺序排序后的索引

s = 'banana'
>>> [t[1] for t in sorted((s[i:],i) for i in range(len(s)))]
[5, 3, 1, 0, 4, 2]

或另一种方式:

>>> sorted(range(len(s)), key=lambda i: s[i:])
[5, 3, 1, 0, 4, 2]

关于python - 后缀数组python的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54642311/

相关文章:

python - 推荐使用哪种 Python 内存分析器?

ruby - 按日期优化哈希分组数组

c++ - 如何使用后缀数组和 LCP 数组查找字符串的子字符串?

suffix-array - 关于后缀数组的良好教学资源

python - 使用请求模块打开的文件太多

python - 为什么 PyGame 在延迟或 sleep 之前没有在窗口中绘制?

c++ - 使用二叉搜索树查找数组中第k个最小的元素

sql-server - 如何在 .NET 中进行与 SQL Server 排序规则相同的排序?

algorithm - 我们如何从 LCP 阵列构建 LCP-LR 阵列?

python - 如何使用列表理解创建斐波那契数列?