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