添加 0131.分割回文串 go版本

添加 0131.分割回文串 go版本
This commit is contained in:
X-shuffle
2021-06-20 14:47:48 +08:00
committed by GitHub
parent 04f6bd2703
commit c430004a0b

View File

@ -312,6 +312,50 @@ class Solution:
```
Go
> 注意切片go切片是披着值类型外衣的引用类型
```go
func partition(s string) [][]string {
var tmpString []string//切割字符串集合
var res [][]string//结果集合
backTracking(s,tmpString,0,&res)
return res
}
func backTracking(s string,tmpString []string,startIndex int,res *[][]string){
if startIndex==len(s){//到达字符串末尾了
//进行一次切片拷贝怕之后的操作影响tmpString切片内的值
t := make([]string, len(tmpString))
copy(t, tmpString)
*res=append(*res,t)
}
for i:=startIndex;i<len(s);i++{
//处理首先通过startIndex和i判断切割的区间进而判断该区间的字符串是否为回文若为回文则加入到tmpString否则继续后移找到回文区间这里为一层处理
if isPartition(s,startIndex,i){
tmpString=append(tmpString,s[startIndex:i+1])
}else{
continue
}
//递归
backTracking(s,tmpString,i+1,res)
//回溯
tmpString=tmpString[:len(tmpString)-1]
}
}
//判断是否为回文
func isPartition(s string,startIndex,end int)bool{
left:=startIndex
right:=end
for ;left<right;{
if s[left]!=s[right]{
return false
}
//移动左右指针
left++
right--
}
return true
}
```
javaScript