leetcode 131题,dfs到叶子节点将每次的结果加入ans中,但是发现一些问题。
下面把每次改变后的ans打印出来,发现第一个append到ans的slice被修改了,百思不得其解,来问问各位大佬。跪求!
package main
import (
"fmt"
)
func partition(s string) [][]string {
ans := make([][]string, 0)
check := func(s string) bool {
i, j := 0, len(s)-1
for i < j {
if s[i] != s[j] {
return false
}
i++
j--
}
return true
}
var dfs func(s string, tmp []string)
dfs = func(s string, tmp []string) {
if len(s) == 0 {
ans = append(ans, tmp)
fmt.Println(ans) //打印到叶子节点时的ans(添加新结果后的情况)
return
}
for i := 1; i <= len(s); i++ {
if check(s[:i]) {
dfs(s[i:], append(tmp, s[:i]))
}
}
}
dfs(s, []string{})
return ans
}
func main() {
ans := partition("ababbbab")
fmt.Println(len(ans))
}