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

进阶

对于长度不超过 2,000 的字符串,你能找出将 s 切分成回文串所需的最少切割次数吗?

重置代码
def partition(s):
    # 在这里编写代码

测试 #1

测试 #2

参数

s = "aab"

预期输出

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