七叶笔记 » golang编程 » Go实现算法:分割回文串(LeetCode)

Go实现算法:分割回文串(LeetCode)

题目:

给定一个字符串 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
}
 

相关文章