Могу ли я сгенерировать все подстроки со сложностью < O(n^2)

В настоящее время я использую два вложенных 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). Хотя, увидев мой код, любой может предположить, что это невозможно, так как я добавляю каждую подстроку в список. Но моя цель состоит не в том, чтобы хранить все подстроки, а в том, чтобы найти строку, которая лексикографически является наименьшей строкой.

6
задан Ravi Joshi 11 April 2012 в 12:45
поделиться