代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"math"
)
func partition(s string) int {
n := len(s)
if n == 0 || n == 1 {
return 0
}
mem := make(map[int]map[int]int)
for i := 0 ; i < n ; i ++ {
mem[i] = make(map[int]int)
}
res := make([][]string,0,0)
var backTrace func (l ,r int , str string, tmp []string)
backTrace = func(l, r int, str string ,tmp []string) {
if l == r {
res = append(res, tmp)
}
for i := l + 1 ; i <= r ; i ++ {
sub := str[l:i]
if mem[l][i] == 1 || IsPalindrome(sub){
mem[l][i] = 1
tmp = append(tmp, sub)
backTrace(i ,r ,str , append([]string{} , tmp...))
tmp = tmp[:len(tmp)-1]
continue
}
}
}
backTrace(0,n,s,[]string{})
times := math.MaxInt32
for _ , a := range res {
times = min(times , len(a))
}
return times - 1
}
func IsPalindrome (s string) bool {
n := len(s)
for i := 0 ; i < n / 2 ; i++ {
if s[i] != s[n-i-1] {
return false
}
}
return true
}
func main() {
fmt.Println(partition("aab"))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。