Для строки A = "abcd" тогда ответ должен быть
{a,ab,abc,abcd,b,bc,bcd,c,cd,d}
Чтобы найти всю подстроку, я использовал следующий метод
for (int i = 0; i < A.length(); i++) {
for (int j = i+1; j <= A.length(); j++) {
System.out.println(A.substring(i,j));
}
}
Но, насколько я понимаю, сложность связана с O(N^2)
. Можем ли мы сделать это быстрее? Я сослался на предыдущий вопрос, и была ссылка на дерево суффиксов, но это, похоже, не решило мою проблему. Вывод, который я получаю из дерева суффиксов, это
{
1: abcd
2: bcd
3: cd
4: d
}
Может ли кто-нибудь помочь мне найти самый быстрый способ сделать это? Что-то вроде линейного времени?