Bulls and Cows

来源:互联网 发布:dota2第一滴血数据bug 编辑:程序博客网 时间:2024/06/08 07:49

先说一下,这道题的意思,让你找到同一位的并且相同的数,总和为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";}};



0 0
原创粉丝点击