电子商务网站开发与实训答案,sem推广和seo的区别,冷门缺人却高薪的职业,浙江省工程造价信息网299. 猜数字游戏
题目描述#xff1a; 你在和朋友一起玩 猜数字#xff08;Bulls and Cows#xff09;游戏#xff0c;该游戏规则如下#xff1a;
写出一个秘密数字#xff0c;并请朋友猜这个数字是多少。朋友每猜测一次#xff0c;你就会给他一个包含下述信息的提示 你在和朋友一起玩 猜数字Bulls and Cows游戏该游戏规则如下
写出一个秘密数字并请朋友猜这个数字是多少。朋友每猜测一次你就会给他一个包含下述信息的提示
猜测数字中有多少位属于数字和确切位置都猜对了称为 “Bulls”公牛 有多少位属于数字猜对了但是位置不对称为 “Cows”奶牛。也就是说这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。 给你一个秘密数字 secret 和朋友猜测的数字 guess 请你返回对朋友这次猜测的提示。
提示的格式为 “xAyB” x 是公牛个数 y 是奶牛个数A 表示公牛B 表示奶牛。
请注意秘密数字和朋友猜测的数字都可能含有重复数字。
考察重点以一个序数指针遍历两数组当值相等则“公牛”1以一个map记录相同值不同位的情况secret为其加一guess为其减一因此当值不为0时说明匹配成功“奶牛”1。
func getHint(secret string, guess string) string {nMap, sLen, aNum, bNum : make(map[int]int), len(secret), 0, 0 for x : sLen-1; x 0; { /**aNum记录两个数中位数和值都相同的数量bNum记录两个数中值相同但是位数不同的数量1807 7810aNum 1 bNum 3*/if secret[x] guess[x] {aNum} else {tempx, tempy : int(secret[x]-0), int(guess[x]-0) //如果temp是guess中的数则map--否则mapif nMap[tempx] 0 { //当temp是secret中且map[temp]0 说明匹配到了bNum //当temp是guess中且map[temp]0 说明匹配到了}nMap[tempx]if nMap[tempy] 0 {bNum //bNum不能等最后才加因为当map[temp]-1 我们不知道是加了一次减了两次 还是 减了一次}nMap[tempy]--}x--}return strconv.Itoa(aNum) A strconv.Itoa(bNum) B
}