java - 我可以生成复杂度 < O(n^2) 的所有子字符串吗

标签 java suffix-tree substring

目前我正在使用两个嵌套的for 循环来生成字符串的所有子字符串。我听说过 Suffix Tree 但 AFAIK Suffix Tree 生成后缀而不是子字符串。以下是我目前正在使用的代码-

        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) 的时间内生成所有子字符串的方法。虽然通过查看我的代码,任何人都可以建议我这是不可能的,因为我将每个子字符串添加到列表中。但我的目标不是存储所有的子串,我的目标是找到一个按字典顺序排列最小的字符串。

最佳答案

O(n^2) 个不同的子串,因此没有算法可以用比O(n^2)< 更好的复杂度来枚举它们!

不过,查找字典序最小子串的问题是完全不同的问题。它始终是空字符串,因此这是一个 O(1) 操作(也是一个非常没有意义的操作)。

关于java - 我可以生成复杂度 < O(n^2) 的所有子字符串吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106164/

相关文章:

java - 如何使用正则表达式查找字符串中子字符串的不同出现次数?

android - 如何防止删除Android中编辑文本的第一个字符

java - 如何在 Java 中使用 Apache POI 创建 Excel 电子表格时修复 NoClassDefFoundError?

java - 在方法内嵌套 while 循环后无法返回值

Java 链表迭代器 : Why are they returning only Objects?

algorithm - 优化所有子字符串的 trie 结构

c++ - 在具有后缀树的 LZ77/LZSS 上匹配重叠前瞻

gnuplot - 如何在 gnuplot 中使用子字符串

java - Android应用内大广告

algorithm - 标记内部节点的后缀数组