Haikson

[ Everything is possible. Everything takes time. ]

Как на Python получить все подстроки в строке

Нельзя придумать более бесполезной задачи, но, если нужно из строки получить список всех возможных подстрок, то можно воспользоваться примером ниже

Не нашел более быстрого алгоритма, а этот выполняется за 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