题意有一些绕,但其实就是对于不断变化的i,求以j(0=j<i)使得suffix[j]与suffix[i]的最长公共前缀最长,如果有多个j,则取最小的j. 可以在rank数组中二分,在1-rank[i-1]中二分最接近i的j使得sa[j]小于i,通俗地说就是rank比的rank[i]小,并且位于i之前的后缀.因为这个是左边最接近rank[i]的,所以与suffix[i]的最长公共前缀一定是满足最大的.接下来再根据得到的LCP值,二分一个最小的j.同理,再从rank[i+1]到rank[n]中作类似…