我试图通过论文http://webglimpse.net/pubs/suffix.pdf
中的理论但是当他们说
时,我有点迷茫让Ai成为第一个桶中的第一个suf fi x(即Pos [0] = i),并考虑Ai-h(如果ih <0,那么我们忽略Ai并采用Pos [1]的suf fi x,等等)。由于Ai以最小的h符号字符串开头,因此Ai-h应该是其2h桶中的第一个。
我无法理解这句话。如果i-h 0时,如何在常数时间内确定位置。阶段1中的0?
一个示例impl是http://belbesy.wordpress.com/2012/10/10/spoj-649-distinct-substrings-suffix-arrays-nlgn/
答案 0 :(得分:0)
我强烈建议,不要试图理解C ++代码,而是手动浏览这个Python implementation of the Manbers-Myers suffix array construction algorithm,以获得一个简单的5个字符示例。
因为Python版本只有大约15行代码,所以很容易理解。
即使您不了解Python,也要将其视为伪代码,将谷歌视为您不理解的语法。
就个人而言,我手工浏览了一个5个字符的字符串,这足以帮助我理解算法是如何工作的。