Нельзя придумать более бесполезной задачи, но, если нужно из строки получить список всех возможных подстрок, то можно воспользоваться примером ниже
Не нашел более быстрого алгоритма, а этот выполняется за O(n^2). Поэтому выложу то, что есть:
def all_substrings(s): res = [ s[i: j] for i in range(len(s)) for j in range(i + 1, len(s) + 1) ] return res
Как пример, можно использовать для нахождения все подстрок, в которых символы уникальны
def all_substrings(s): res = [ s[i: j] for i in range(len(s)) for j in range(i + 1, len(s) + 1) if len(s[i: j]) == len(set(s[i: j])) ] return res
Или же для нахождения длины подстроки, в которой символы уникальны.
def all_substrings(s): res = [ len(s[i: j]) for i in range(len(s)) for j in range(i + 1, len(s) + 1) if len(s[i: j]) == len(set(s[i: j])) ] return res