mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
添加 0131.分割回文串 go版本
添加 0131.分割回文串 go版本
This commit is contained in:
@ -312,6 +312,50 @@ class Solution:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
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:
|
javaScript:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user