Menu
CoddyTech

Palindrome Partitioning

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

Записывайте каждое разбиение как последовательность частей, соединённых символом |: разбиение aab на a, a и b даёт a|a|b. Верните разбиения, отсортированные по возрастанию кодов символов, так что | идёт после всех строчных букв.

Функция

partition(s: string) → string-array
sstring
строка строчных букв, которую нужно вырезать
Возвращаетstring-array
каждое разбиение s на палиндромы, записанное с помощью | между частями, в порядке возрастания

Ограничения

  • 1 ≤ s.length ≤ 11
  • s содержит только строчные буквы английского алфавита.
  • Строка из 11 одинаковых букв имеет 1,024 варианта разбиения — это наибольший ответ.

Примеры

Ввод
s = "aab"
Вывод
["aa|b", "a|a|b"]
Пояснение
Только aa|b и a|a|b состоят из палиндромных частей; вариант a|ab не подходит из-за ab. Первым при сортировке идёт aa|b: во втором символе у него стоит a, тогда как у другого — |, который сортируется после любой буквы.
challenge icon

Дополнительный вопрос

Сможешь найти наименьшее число разрезов, которое разделит s на палиндромы для строк длиной до 2 000?

Сбросить код
def partition(s):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

s = "aab"

Ожидаемый вывод

["aa|b", "a|a|b"]