Для String 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
}
Может ли кто-нибудь помочь мне найти самый быстрый способ сделать это? Что-то вроде линейного времени?
for (int j = i+1; j <= A.length(); j++)
следует заменить наfor (int j = i+1; j <= A.length() - i; j++)
- person HojjatK   schedule 09.06.2019