基于php技术的个人网站设计,wordpress知更鸟主题2019,站长之家源码下载,网页微信怎么登录299. 猜数字游戏
你在和朋友一起玩 猜数字#xff08;Bulls and Cows#xff09;游戏#xff0c;该游戏规则如下#xff1a;
写出一个秘密数字#xff0c;并请朋友猜这个数字是多少。朋友每猜测一次#xff0c;你就会给他一个包含下述信息的提示#xff1a;
猜测数字…299. 猜数字游戏
你在和朋友一起玩 猜数字Bulls and Cows游戏该游戏规则如下
写出一个秘密数字并请朋友猜这个数字是多少。朋友每猜测一次你就会给他一个包含下述信息的提示
猜测数字中有多少位属于数字和确切位置都猜对了称为 “Bulls”, 公牛 有多少位属于数字猜对了但是位置不对称为 “Cows”, 奶牛。也就是说这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。 给你一个秘密数字 secret 和朋友猜测的数字 guess 请你返回对朋友这次猜测的提示。
提示的格式为 “xAyB” x 是公牛个数 y 是奶牛个数A 表示公牛B 表示奶牛。
请注意秘密数字和朋友猜测的数字都可能含有重复数字。 示例 1:输入: secret 1807, guess 7810
输出: 1A3B
解释: 数字和位置都对公牛用 | 连接数字猜对位置不对奶牛的采用斜体加粗标识。
1807|
7810示例 2:输入: secret 1123, guess 0111
输出: 1A1B
解释: 数字和位置都对公牛用 | 连接数字猜对位置不对奶牛的采用斜体加粗标识。
1123 1123| or |
0111 0111
注意两个不匹配的 1 中只有一个会算作奶牛数字猜对位置不对。通过重新排列非公牛数字其中仅有一个 1 可以成为公牛数字。示例 3输入secret 1, guess 0
输出0A0B示例 4输入secret 1, guess 1
输出1A0B
提示
1 secret.length, guess.length 1000secret.length guess.lengthsecret 和 guess 仅由数字组成
解题思路
遍历两个字符串找出两个字符串中数字和确切位置都猜对的个数统计secret和guess的每个阿拉伯数字的个数因为有多少位属于数字猜对了但是位置不对称为 “Cows”, 奶牛的计算方式是有多少位非公牛数字可以通过重新排列转换成公牛数字因此如果对于某个数字secret和guess都有出现的话我们就可以将其重新排列为公牛数字。
代码
class Solution {
public:string getHint(string secret, string guess) {int b(0),c(0);vectorint cnt(10,0);vectorint cnt2(10,0);for (int i 0; i secret.size(); i) {if (secret[i]guess[i]){b;}else {cnt[secret[i]-0];cnt2[guess[i]-0];}}for (int i 0; i 10; i) {cmin(cnt[i],cnt2[i]);}return to_string(b)Ato_string(c)B;}
};