5
使用O(n)中的后缀数组的字符串的最小词典旋转
我将引用ACM 2003中的问题: 考虑一个长度为n(1 <= n <= 100000)的字符串。确定其最小词典编排旋转。例如,字符串“ alabala”的旋转为: 阿拉巴拉 拉巴拉 阿巴拉尔 巴拉拉 阿拉拉卜 拉拉巴 阿拉巴拉 其中最小的是“ aalabal”。 至于解决方案-我知道我需要构造一个后缀数组 -可以说我可以在O(n)中做到这一点。我的问题仍然是,如何找到O(n)的最小旋转度?(n =字符串的长度) 我对此问题非常感兴趣,但仍然不知如何解决。我对概念和如何解决问题更感兴趣,而不对具体实现更感兴趣。 注意:最小旋转的含义与英语词典中的顺序相同-“ dwor”在“ word”之前,因为d在w之前。 编辑:后缀数组构造需要O(N) 最后编辑:我想我找到了解决方案!!!如果我只是合并两个字符串怎么办?因此,如果字符串是“ alabala”,那么新字符串将是“ alabalaalabala”,现在我只需构造一个后缀数组(在O(2n)= O(n)中)并得到第一个后缀?我想这可能是对的。你怎么看?谢谢!