1 class Solution: 2 def getHint(self, secret: str, guess: str) -> str: 3 n1 = len(secret) 4 n2 = len(guess) 5 A,B = 0,0 6 dicA,dicB= {},{} 7 for i in range(n1): 8 cur = secret[i] 9 tar = guess[i] 10 if cur == tar: 11 A += 1 12 else: 13 if cur not in dicA: 14 dicA[cur] = 1 15 else: 16 dicA[cur] += 1 17 if tar not in dicB: 18 dicB[tar] = 1 19 else: 20 dicB[tar] += 1 21 for k,v in dicB.items(): 22 if k in dicA: 23 B += min(v,dicA[k]) 24 return str(A) + 'A' + str(B) + 'B'
两次遍历,第一次先计算A,如果对应位置的字符一样,则A+1;如果对应位置的字符不同,则分别计算两个串不匹配字符的数量。
第二次计算B,在不匹配的字符中,两个字典都出现的,就符合B,其值为这个字符在两个字典中的值较小的。