美团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

限制是一秒,时间超了,要做剪枝操作。

#笔试经验#
全部评论

相关推荐

爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务