LC 0299 [M] Bulls and Cows - ALawliet/algorithms GitHub Wiki

class Solution:
    def getHint(self, secret, guess):
        bulls = 0

        secret_char_to_count = defaultdict(int)
        guess_char_to_count = defaultdict(int)

        for x, y in zip(secret, guess):
            if x == y:
                bulls += 1
            else:
                secret_char_to_count[x] += 1
                guess_char_to_count[y] += 1

        cows = sum(min(secret_char_to_count[c], guess_char_to_count[c]) for c in secret_char_to_count)

        return f'{bulls}A{cows}B'
class Solution(object):
    def getHint(self, secret, guess):
        bull, cow = 0, 0
        s = {} # secret hashtable
        g = {} # guess hashtable
        
        for i in xrange(len(secret)):
            if secret[i] == guess[i]:
                bull += 1
            else:
                s[secret[i]] = s.get(secret[i], 0) + 1
                g[guess[i]] = g.get(guess[i], 0) + 1
        
        for k in s:
            if k in g:
                cow += min(s[k], g[k])
        
        return '{0}A{1}B'.format(bull, cow)
def getHint(self, secret, guess):
"""
:type secret: str
:type guess: str
:rtype: str
"""
secret_map, guess_map = {}, {}
bull_count, cow_count = 0, 0
for i in range(len(secret)):
    if secret[i] == guess[i]:
        bull_count += 1
    else:
        if secret[i] in secret_map:
            secret_map[secret[i]] += 1
        else:
            secret_map[secret[i]] = 1
        if guess[i] in guess_map:
            guess_map[guess[i]] += 1
        else:
            guess_map[guess[i]] = 1
for i in guess_map:
    if i in secret_map:
        cow_count += min(secret_map[i], guess_map[i])
return '%sA%sB' % (bull_count, cow_count)