131.M 分割回文串
思路
Code
func partition(s string) [][]string {
var path []string
var ans [][]string
backtrace(s, 0, path, &ans)
return ans
}
func backtrace(s string, start int, path []string, ans *[][]string) {
if start == len(s) {
*ans = append(*ans, append([]string{}, path...))
return
}
// 需要注意:这里需要包含i等于len(s)的情况
for i := start + 1; i <= len(s); i++ {
part := s[start:i]
if check(part) {
path = append(path, part)
backtrace(s, i, path, ans)
path = path[0 : len(path)-1]
}
}
}
func check(s string) bool {
l, r := 0, len(s)-1
for l <= r {
if s[l] != s[r] {
return false
}
l++
r--
}
return true
}Last updated