Дана строка s, разделите s так, чтобы каждая подстрока раздела была палиндромом. Вернуть все возможные палиндромные разбиения s.

Строка палиндрома – это строка, которая читается так же, как в прямом, так и в обратном порядке.

Пример 1:

Input: s = "aab"
Output: [["a","a","b"],["aa","b"]]

Пример 2:

Input: s = "a"
Output: [["a"]]

Решение:

Мы попробуем разбить каждую часть и проверить, палиндром это или нет.

для «ab» -> [a,b], [ab] мы должны разбить два раза сначала после «a», а затем после «b».

аналогично для «aab» -> [a,a,b], [a,ab], [aa,b], [aab].

для каждого разреза нам нужно проверить палиндром.

Оптимизация:

Так как мы проверяем палиндром для одной и той же строки много раз, мы можем сохранить его для каждой вычисляемой строки.

Давайте код

Заключение:

Это проблема от 2 января 2022 года — Проблема дня на Leetcode, если вы хотите больше подобных, следите за обновлениями.

Прокомментируйте свои ценные мысли или любые предложения по модификации решения.