C++
class Solution {
public:
string getHint(string secret, string guess) {
if (secret.empty() || guess.empty() || secret.size()!=guess.size())
return "";
map<char, int>cache;
int bull = 0;
int cow = 0;
for (size_t i = 0; i < secret.size(); ++i) {
if (secret[i] == guess[i])
bull++;
cache[secret[i]]++;
}
for (auto v : guess) {
if (cache[v] > 0) {
cow++;
cache[v]--;
}
}
return toString(bull) + "A" + toString(cow-bull) + "B";
}
private:
string toString(const int &value) {
stringstream ss;
ss << value;
return ss.str();
}
};
PYTHON
class Solution(object):
def getHint(self, secret, guess):
"""
:type secret: str
:type guess: str
:rtype: str
"""
if len(secret)!=len(guess):
return ''
s = list(secret)
g = list(guess)
cache ={}
bull, cow = 0,0
for i in xrange(len(s)):
if s[i]==g[i]:
bull+=1
if cache.get(s[i], 'N/A') == 'N/A':
cache[s[i]] = 1
else:
cache[s[i]] += 1
for x in g:
if cache.get(x, 'N/A') != 'N/A' and cache.get(x, 'N/A') > 0:
cow += 1
cache[x] -= 1
return str(bull)+'A'+str(cow-bull)+'B'