你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。
请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用 A 表示公牛,用 B 表示奶牛。
请注意秘密数字和朋友的猜测数都可能含有重复数字。
示例 1:
输入: secret = "1807", guess = "7810"
输出: "1A3B"
解释: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。
def getHint(secret,guess):
ds = {}
dg = {} #插入字典的原因主要是排除重复的元素
bulls = 0
cows = 0
for i in range(len(guess)):
if secret[i] == guess[i]:
bulls += 1
else:
if secret[i] in ds:
ds[secret[i]]+=1
else:
ds[secret[i]] = 1
if guess[i] in dg:
dg[guess[i]]+=1
else:
dg[guess[i]]=1
for i in dg:
if i in ds:
cows += min(ds[i],dg[i])
return str(bulls)+'A' + str(cows)+'B'