Bulls and Cows
2016-05-11 18:05
155 查看
先说一下,这道题的意思,让你找到同一位的并且相同的数,总和为A,不同位相同的数总和为B,最后输出A,B的值。
这道题默认的是secret和guess位数一样的。
参考了大神的代码,学习了以下,写下思路:
进行循环
首先判断本次循环对应的位是否相同,如果相同,bull++;如果不同判断secret这位数在guess中是否出现,有的话cow++,在判断guess数是否在secret出现,有的话进行bull++;
判断的条件是namemap在secret出现则++;在guess出现则--;
如果namemap小于0,则说明这secret位数在guess出过了;如果大于0,则说明guess这位数在secret出现过了。
代码如下:
class Solution{
public:
string getHint(string secret,string guess){
int n1=secret.size();
int namemap[10]={0};
int bull=0,cow=0;
for(int i=0;i<n1;i++){
if(secret[i]==guess[i]) bull++;
else{
cow=(namemap[secret[i]-'0']<0)?cow+1:cow;
namemap[secret[i]-'0']++;
cow=(namemap[guess[i]-'0']>0)?cow+1:cow;
namemap[guess[i]-'0']--;
}
}
return to_string(bull)+"A"+to_string(cow)+"B";
}
};
这道题默认的是secret和guess位数一样的。
参考了大神的代码,学习了以下,写下思路:
进行循环
首先判断本次循环对应的位是否相同,如果相同,bull++;如果不同判断secret这位数在guess中是否出现,有的话cow++,在判断guess数是否在secret出现,有的话进行bull++;
判断的条件是namemap在secret出现则++;在guess出现则--;
如果namemap小于0,则说明这secret位数在guess出过了;如果大于0,则说明guess这位数在secret出现过了。
代码如下:
class Solution{
public:
string getHint(string secret,string guess){
int n1=secret.size();
int namemap[10]={0};
int bull=0,cow=0;
for(int i=0;i<n1;i++){
if(secret[i]==guess[i]) bull++;
else{
cow=(namemap[secret[i]-'0']<0)?cow+1:cow;
namemap[secret[i]-'0']++;
cow=(namemap[guess[i]-'0']>0)?cow+1:cow;
namemap[guess[i]-'0']--;
}
}
return to_string(bull)+"A"+to_string(cow)+"B";
}
};
相关文章推荐
- JavaScript复习第二天元素节点的增删操作
- APNs的文档
- mysql workbench 从模型导出表结构
- 棋盘分割
- 《TCP/IP详解》学习笔记-第6/7/8章 ICMP/Ping/Traceroute
- Java-cannot resolve method 'XXX'
- demo源码
- Python基础一
- Base64编码
- 精妙SQL语句
- Java小知识点总结
- Android常用控件及其属性
- java学习笔记数组
- UniversalImageLoader源码解读03-一些无关紧要的小类
- 基于HTK的连续语音识别系统搭建学习笔记(三)
- 将Mac下的openssl更新到最新版本
- Android酷炫实用的开源框架(UI框架)
- vi编辑器(2)
- 如何禁止页面滚动事件
- 基于HTK的连续语音识别系统搭建学习笔记(二)