# 299. Bulls and Cows

• Time: $O(n)$
• Space: $O(10)$
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public: string getHint(string secret, string guess) { int A = 0; int B = 0; vector count1(10); vector count2(10); for (int i = 0; i < secret.length(); ++i) if (secret[i] == guess[i]) ++A; else { ++count1[secret[i] - '0']; ++count2[guess[i] - '0']; } for (int i = 0; i < 10; ++i) B += min(count1[i], count2[i]); return to_string(A) + "A" + to_string(B) + "B"; } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Solution { public String getHint(String secret, String guess) { int A = 0; int B = 0; int[] count1 = new int[10]; int[] count2 = new int[10]; for (int i = 0; i < secret.length(); ++i) if (secret.charAt(i) == guess.charAt(i)) ++A; else { ++count1[secret.charAt(i) - '0']; ++count2[guess.charAt(i) - '0']; } for (int i = 0; i < 10; ++i) B += Math.min(count1[i], count2[i]); return String.valueOf(A) + "A" + String.valueOf(B) + "B"; } } 
 1 2 3 4 5 class Solution: def getHint(self, secret: str, guess: str) -> str: bulls = sum(map(operator.eq, secret, guess)) bovine = sum(min(secret.count(x), guess.count(x)) for x in set(guess)) return '%dA%dB' % (bulls, bovine - bulls)