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,其值为这个字符在两个字典中的值较小的。