leetcode笔记:Bulls and Cows
一. 题目描写叙述
You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a hint that indicates how many digits in said guess match your secret number exactly in both digit and position (called “bulls”) and how many digits match the secret number but locate in the wrong position (called “cows”). Your friend will use successive guesses and hints to eventually derive the secret number.
For example:
Secret number: “1807”
Friend’s guess: “7810”
Hint: 1 bull and 3 cows. (The bull is 8, the cows are 0, 1 and 7.)
Write a function to return a hint according to the secret number and friend’s guess, use A to indicate the bulls and B to indicate the cows. In the above example, your function should return “1A3B”.
Please note that both secret number and friend’s guess may contain duplicate digits, for example:
Secret number: “1123”
Friend’s guess: “0111”
In this case, the 1st 1 in friend’s guess is a bull, the 2nd or 3rd 1 is a cow, and your function should return “1A1B”.
You may assume that the secret number and your friend’s guess only contain digits, and their lengths are always equal.
二. 题目分析
该题即是猜数字(又称 Bulls and Cows )是一种大概于20世纪中期兴起于英国的益智类小游戏。游戏规则抄送:http://baike.baidu.com/link?url=2OFEtJeMp3lxnGUt9tya4jVBwsUgCUM6C8F0zAdNTGtXS_KpjXa80lwIJpY_klUlL52JbO51fQYyqhs3fLMRLSsoSnGn7tvUOO6_iOxMTYbl7qEVhHdukYd1iTqqF-2uLDMXO9VuJFUTmmFN1qLFjVvQl6J6i7pr4Xd1oKJV-5_
在扫描过程前,创建一个数组用于记录0~9字符出现的次数。并在扫描时使用两种规则:
- 若字符在secret中出现一次则+1
- 若字符在guess中出现一次则-1
一个样例:当temp中’1’所相应的下标元素小于零时,此时说明guess此前出现过’1’的次数比secret多(或者说没有被secret出现’1’的次数抵消完),此时若secret出现’1’。则B++;反之,当temp中’1’所相应的下标元素大于零时。此时说明secret此前出现过’1’的次数比guess多(或者说没有被guess出现’1’的次数抵消完)。此时若guess出现’1’,则B++。
三. 演示样例代码
class Solution {
public:
string getHint(string secret, string guess) {
int temp[10] = {0}; // 用于存放0~9字符出现的次数
int SIZE = secret.size();
int A = 0, B = 0;
for (int i = 0; i < SIZE; ++i)
{
if (secret[i] == guess[i])
{
++A;
continue;
}
else // 若字符在secret中出现一次则+1,在guess中出现一次则-1
{
if (temp[secret[i] - '0'] < 0)
++B;
++temp[secret[i] - '0'];
if (temp[guess[i] - '0'] > 0)
++B;
--temp[guess[i] - '0'];
}
}
char result[10] = {0};
sprintf(result, "%dA%dB", A, B);
return result;
}
};
四. 小结
该题尽管比較简单,但还是挺有意思的,最后输出xAxB也改了一小段时间。
leetcode笔记:Bulls and Cows的更多相关文章
- LeetCode 299 Bulls and Cows
Problem: You are playing the following Bulls and Cows game with your friend: You write down a number ...
- Java [Leetcode 229]Bulls and Cows
题目描述: You are playing the following Bulls and Cows game with your friend: You write down a number an ...
- LeetCode(45)-Bulls and Cows
题目: You are playing the following Bulls and Cows game with your friend: You write down a number and ...
- [leetcode]299. Bulls and Cows公牛和母牛
You are playing the following Bulls and Cows game with your friend: You write down a number and ask ...
- Leetcode 299 Bulls and Cows 字符串处理 统计
A就是统计猜对的同位同字符的个数 B就是统计统计猜对的不同位同字符的个数 非常简单的题 class Solution { public: string getHint(string secret, s ...
- [LeetCode] Bulls and Cows 公母牛游戏
You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret numbe ...
- [Leetcode] Bulls and Cows
You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret numbe ...
- 【一天一道LeetCode】#299. Bulls and Cows
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 You are ...
- 【LeetCode】299. Bulls and Cows 解题报告(Python)
[LeetCode]299. Bulls and Cows 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题 ...
随机推荐
- SqlServer 还原数据库 代码实现
RESTORE DATABASE TargetDB FROM DISK = 'D:\DataBase\DB.bak' with replace, MOVE 'DB' TO 'D:\DataBase\T ...
- 自定义的开关按钮——SwitchButton
本文转自:http://blog.csdn.net/swust_chenpeng/article/details/19967501 我将原文的控件进行了一些修改,去掉了原来控件的外边框,只留下重要的遮 ...
- Shell操作mysql数据库
From : http://www.2cto.com/database/201306/220570.html Shell操作mysql数据库 mysql -hhostname -Pport -u ...
- asp.net 获得域名,端口,虚拟目录[转]
asp.net 获得域名,端口,虚拟目录 记性不好,好多次都被路径问题给拦住了.我现在想得到一个资源的全URL路径,因此首先想得到网站当前的域名,端口和虚拟目录.看下表 底下這張表就是各種跟 Brow ...
- Sharepoint2013 Report Service初探
首先需要建立相应的report报表 如图: 这里的sql如下: SELECT PC.Name AS Category, PS.Name AS Subcategory, DATEPART(yy, SOH ...
- 糟糕的css用法 1
现在网站追求越来越漂亮好看,越来越炫,所以css是必不可少的.可是我发现许多人使用css的方式是不对的,至少是不推荐的. 比如下面的css用法不对 (1)一个页面对应一个css文件 这种做法是我深恶痛 ...
- css3中webkit内核的滚动栏样式
项目其中用到的滚动栏样式,在别人的基础上调成适合自己的样式.(IE能够调试滚动栏样式,firefox眼下不能调试) ::-webkit-scrollbar { width: 14px; }/* Tra ...
- 【R】自定义函数方法
- wifidog 源码初分析(3)-转
上一篇分析了 接入设备 在接入路由器,并发起首次 HTTP/80 请求到路由器上时,wifidog 是如何将此 HTTP 请求重定向至 auth-server 的流程. 之后 接入设备 的浏览器接收到 ...
- Jquery 让contains不区分大小写
默认的Jquery contains方法是区分大小写的,以下方法可以使contains不区分大小写(在匹配时将要匹配的元素内容全部转换成小写再进行匹配) // NEW selector jQuery. ...