美团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
限制是一秒,时间超了,要做剪枝操作。
#笔试经验#