目前我使用两个嵌套for
循环来生成字符串的所有子字符串。我听说Suffix Tree
,但AFAIK Suffix Tree
生成后缀不是子字符串。以下是目前我正在using-我可以生成复杂度为<O(n^2)的所有子字符串
String s = "abacbccca";
int l = s.length();
for (short c = 0; c < l; c++) {
for (short r = 0; r < l - c; r++){
Sting ss=s.substring(c, c + r + 1);
if(!t.contains(ss));
t.add(ss);
}
}
的代码,我想一个办法,可以产生在不到O(n^2)
所有子。尽管通过查看我的代码,任何人都可以建议我这是不可能的,因为我将每个子字符串添加到列表中。但我的目标不是存储所有的子字符串,我的目标是找到一个按字典顺序排列成最小字符串的字符串。
如果您只对字典上最小的字符串感兴趣,那么恐怕Niklas B.下面是正确的。但是如果你对O(n)大小的数据结构感兴趣,它允许你访问任何给定i的第i个最小字符串,正如你的问题似乎表明的那样,那么也许我对[这个问题]的答案(http: //stackoverflow.com/q/9389681/777186)帮助。 – jogojapan 2012-04-11 13:55:55
@jogojapan:是的....那就是我想要的......非常感谢你...... – 2012-04-11 14:28:20