Вот очень простой способ построить массив суффиксов из строки в python:
def sort_offsets(a, b):
return cmp(content[a:], content[b:])
content = "foobar baz foo"
suffix_array.sort(cmp=sort_offsets)
print suffix_array
[6, 10, 4, 8, 3, 7, 11, 0, 13, 2, 12, 1, 5, 9]
Однако «content[a:]» создает копию содержимого, что становится очень неэффективным, когда содержимое становится большим. Поэтому мне интересно, есть ли способ сравнить две подстроки без их копирования. Я пытался использовать встроенный буфер, но это не сработало.