1. 题意
给两个数组,一个是正确答案,一个是猜出的答案;
求猜出的答案中正确位置字符的个数,和错误位置正确字符的位置。
2. 题解
直接模拟即可。
当两个串匹配时,公牛数自增;否则分别统计答案串和猜测串中字符。
最后取统计串字符和答案串字符两个中的最小值相加求得母牛数目。
class Solution {
public:
string getHint(string secret, string guess) {
int bulls = 0;
int cows = 0;
int s[10] = {0};
int g[10] = {0};
int cnt = 0;
for (char c:secret) {
if ( c == guess[cnt]) {
bulls++;
}
else {
s[c - '0']++;
g[guess[cnt]-'0']++;
}
++cnt;
}
for (int i = 0; i < 10; i++) {
cows += min(s[i],g[i]);
}
string ans;
ans.append(to_string(bulls));
ans.push_back('A');
ans.append(to_string(cows));
ans.push_back('B');
return ans;
}
};