Menu
CoddyTech

Palindrome Partitioning

Chuỗi đối xứng đọc từ trái sang phải hay từ phải sang trái đều giống nhau. Chia chuỗi s thành một hoặc nhiều phần sao cho mỗi phần đều là chuỗi đối xứng, rồi trả về mọi cách chia.

Viết mỗi cách chia bằng các phần theo thứ tự, nối với nhau bằng |: chia aab thành a, a và b thì được a|a|b. Trả về các cách chia theo thứ tự tăng dần, so sánh mã ký tự, vì vậy | đứng sau mọi chữ cái viết thường.

Hàm

partition(s: string) → string-array
sstring
chuỗi chữ cái viết thường cần cắt
Trả vềstring-array
mọi cách phân tách s thành các chuỗi đối xứng, viết các phần cách nhau bằng |, theo thứ tự tăng dần

Ràng buộc

  • 1 ≤ s.length ≤ 11
  • s chỉ chứa các chữ cái tiếng Anh viết thường.
  • Một chuỗi gồm 11 chữ cái giống nhau có 1.024 cách tách, nhiều nhất.

Ví dụ

Đầu vào
s = "aab"
Đầu ra
["aa|b", "a|a|b"]
Giải thích
Chỉ aa|b và a|a|b có tất cả các phần là chuỗi đối xứng (palindrome); a|ab không đạt vì ab không phải chuỗi đối xứng. aa|b xếp trước: ở ký tự thứ hai, nó có a, còn cách kia có |, ký tự này xếp sau mọi chữ cái.
challenge icon

Câu hỏi mở rộng

Bạn có thể tìm số lần cắt ít nhất để chia s thành các chuỗi đối xứng với độ dài tối đa 2.000 không?

Đặt lại code
def partition(s):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

s = "aab"

Đầu ra mong đợi

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