解题思路
两次遍历
统计两种情况:
1.A---数字对位置对 公牛
2.B---数字对了但位置不对的个数=数字对-数字对且位置对 奶牛
第一种比较好统计,只要对比位置上的字符就好
第二种把遍历第一个字符串中的字符与出现的次数存放在哈希表中,
然后再遍历另一个字符串,每遍历一个字符在哈希表中寻找如果找得到就对这个字符所对应的次数减一,然后再把统计数字加一
代码
class Solution {
public:
string getHint(string secret, string guess) {
vector<int> stand(10,0);
int NRight = 0, NSRight = 0;
for(int i = 0;i < secret.size();i ++){
stand[secret[i] - '0']++;
}
for(int i = 0;i < guess.size();i++){
if(guess[i] == secret[i]){
NSRight++;
}
if(stand[guess[i]-'0']>0){
NRight++;
stand[guess[i]-'0']--;
}
}
NRight = NRight - NSRight;
string res =to_string(NSRight)+"A"+ to_string(NRight)+"B";
return res;
}
};