给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
func partition(s string) [][]string {
res := [][]string{}
temp := []string{}
var judge func(str string) bool
judge = func(str string) bool {
for l, r := 0, len(str)-1; l < r; {
if str[l] != str[r] {
return false
}
l++
r--
}
return true
}
var def func(index int)
def = func(index int) {
if index == len(s) {
res = append(res, append([]string{}, temp...))
return
}
for i := index; i < len(s); i++ {
tag := s[index : i+1]
if judge(tag) {
temp = append(temp, tag)
def(i + 1)
temp = temp[:len(temp)-1]
}
}
}
def(0)
return res
}