美团3月30日算法题——小美的平衡串(golang答案)
package main
import (
"fmt"
"strings"
)
var nums int
var path []string
func main() {
var n int
fmt.Scan(&n)
var str string
fmt.Scan(&str)
backtracking(str, 0)
fmt.Println(nums)
}
func backtracking(str string, index int) {
temp := make([]string, len(path))
copy(temp, path)
if isPalindrome(strings.Join(temp, "")) {
nums = (nums + 1) % 1000000007
}
if index >= len(str) {
return
}
for i := index; i < len(str); i++ {
path = append(path, str[i:i+1])
track(str, i+1)
path = path[:len(path)-1]
}
}
func isPalindrome(str string) bool {
if len(str) < 2 {
return false
}
strMap := make(map[byte]int)
for i := 0; i < len(str); i++ {
strMap[str[i]]++
}
if len(strMap) != 2 {
return false
}
a := make([]int, 0)
for _, i := range strMap {
a = append(a, i)
}
if a[0] == a[1] {
return true
}
return false
}
//5
//ababc
限制是一秒,时间超了,要做剪枝操作。
#笔试经验#