С учетом строки s, что является самым быстрым методом для генерации набора всех его уникальных подстрок?
Пример: для str = "aba" мы получим substrs={"a", "b", "ab", "ba", "aba"}.
Наивный алгоритм состоял бы в том, чтобы пересечь всю строку, производящую подстроки длиной 1..n в каждой итерации, получив верхнюю границу O(n^2).
Возможна ли лучшая граница?
(это технически домашнее задание, поэтому только указатели приветствуются)