题目
word-pattern
算法
* 哈希
* 优化
代码
* 哈希
class Solution {
public:
string getHint(string secret, string guess) {
int m[256] = {0}, bulls = 0, cows = 0;
for (int i = 0; i < secret.size(); ++i) {
if (secret[i] == guess[i]) ++bulls;
else ++m[secret[i]];
}
for (int i = 0; i < secret.size(); ++i) {
if (secret[i] != guess[i] && m[guess[i]]) {
++cows;
--m[guess[i]];
}
}
return to_string(bulls) + "A" + to_string(cows) + "B";
}
};
* 优化
class Solution {
public:
string getHint(string secret, string guess) {
int m[256] = {0}, bulls = 0, cows = 0;
for (int i = 0; i < secret.size(); ++i) {
if (secret[i] == guess[i]) ++bulls;
else {
if (m[secret[i]]++ < 0) ++cows;
if (m[guess[i]]-- > 0) ++ cows;
}
}
return to_string(bulls) + "A" + to_string(cows) + "B";
}
};
* 再优化
class Solution {
public:
string getHint(string secret, string guess) {
int m[256] = {0}, a = 0, b = 0, i = 0;
for (char s : secret) {
char g = guess[i++];
a += s == g;
b += (m[s]++ < 0) + (m[g]-- > 0);
}
return to_string(a) + "A" + to_string(b - a) + "B";
}
};