Menu
CoddyTech

Palindrome Partitioning

Palindrom czyta się tak samo od lewej do prawej i od prawej do lewej. Podziel ciąg znaków s na co najmniej jedną część tak, aby każda część była palindromem, i zwróć wszystkie możliwe podziały.

Zapisz każdy podział jako jego części w kolejności, połączone znakiem |: podział aab na a, a i b daje a|a|b. Zwróć podziały posortowane rosnąco według kodów znaków, tak aby | znajdował się po każdej małej literze.

Funkcja

partition(s: string) → string-array
sstring
ciąg małych liter do wycięcia
Zwracastring-array
każdy podział s na palindromy, zapisany z | między częściami, w kolejności rosnącej

Ograniczenia

  • 1 ≤ s.length ≤ 11
  • s zawiera wyłącznie małe litery alfabetu angielskiego.
  • Ciąg 11 jednakowych liter ma 1,024 podziałów — to największa odpowiedź.

Przykłady

Wejście
s = "aab"
Wyjście
["aa|b", "a|a|b"]
Wyjaśnienie
Tylko aa|b i a|a|b mają wyłącznie palindromiczne części; a|ab nie przechodzi dla ab. aa|b sortuje się jako pierwsze: na drugim znaku ma a, podczas gdy drugi ciąg ma |, który sortuje się po każdej literze.
challenge icon

Pytanie dodatkowe

Czy potrafisz znaleźć najmniejszą liczbę cięć, która dzieli s na palindromy, dla ciągów o długości do 2 000?

Zresetuj kod
def partition(s):
    # Napisz kod tutaj

Test #1

Test #2

Argument

s = "aab"

Oczekiwany wynik

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