题目:
给定一个字符串 s ,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: “aab”
输出:
[
[“aa”,”b”],
[“a”,”a”,”b”]
]
解题:利用递归依次遍历字符串s,将所有可能返回,拼出结果。
func partition(s string) [][]string { result:=make([][]string,0) for i:=0;i<len(s);i++{ if check(s[:i+1]){ ret:=[]string{s[:i+1]} r:= partition (s[i+1:]) if len(r)>0{ for k:=0;k<len(r);k++{ ret1 := append (ret,r[k]...) result=append(result,ret1) } }else{ result=append(result,ret) } } } return result } //检测是否为回文串 func check(s string) bool { if len(s)<=1{ return true } for i,j:=0,len(s)-1;i<j;{ if s[i]==s[j]{ i++ j-- }else{ return false } } return true }