原文链接:https://leetcode-cn.com/problems/palindrome-partitioning/
解题思路:
- 回溯思想;
- 当然也可以看作排列组合问题,向字符串中插入隔板,且满足每个隔板之间的字符串都是回文字符串;
- 判断字符串是否是回文字符串
s==s[::-1]
。
Python3代码:
class Solution:
def partition(self, s: str) -> List[List[str]]:
res = []
size = len(s)
def func(start, track):
if start == size:
res.append(track)
for i in range(start, size):
if s[start:i+1]==s[start:i+1][::-1]: ## 回文
func(i+1, track+[s[start:i+1]])
func(0, [])
return res