LeetCode 299. 猜数字游戏

思路

遍历secret,如果secret和guess中数字匹配,Bulls加1。同时记录secret和guess中出现的数字。
最后遍历0-9,去secret和guess数字中出现少的数,这就是猜对数字数,去掉Bulls,就是Cows。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
string getHint(string secret, string guess) {
vector<int> s_num(10);
vector<int> g_num(10);
int n=secret.length();
vector<bool> isBulls(n);
char s,g;
int Bulls=0,Cows=0;
for(int i=0;i<n;i++){
s=secret[i];
g=guess[i];
if(secret[i]==guess[i]){
isBulls[i]=true;
Bulls++;
}
s_num[s-'0']++;
g_num[g-'0']++;
}
for(int i=0;i<10;i++)
Cows+=min(s_num[i],g_num[i]);

Cows-=Bulls;
string res=to_string(Bulls)+'A'+to_string(Cows)+'B';
return res;
}
};

参考