关键点
分两步,首先对比字符串相同位置上的数
算出bull,并且将相同位置且相同的数字直接删除
第二步根据secret构建map {数字:数目}
遍历guess:每当在map中的keys找到相同数字,且数目大于0,则cow+=1,并且将数字-1,最终得到cow值
举例
secret:1198770
guess:1238970
第一步:算出bull值,删除相同位置且相同的数字
bull=4
secret:197
guess:239
第二步:为secret建立map{数字:数目}
{1:1,9:1,7:1}
遍历 239
发现9在map的keys中,字典变为 {1:1,9:0,7:1}
得到cow值
代码
def getHint(secret, guess):
"""
:type secret: str
:type guess: str
:rtype: str
"""
num_bull=0
num_cow=0
secret_delete=[]
secret = list(secret)
guess = list(guess)
for i in range(len(secret)-1,-1,-1):
if(i>=len(guess)):
continue
if(secret[i]==guess[i]):
num_bull+=1
secret_delete.append(i)
for del_index in secret_delete:
secret.pop(del_index)
guess.pop(del_index)
map_secret={}
for char in secret:
if char in map_secret.keys():
map_secret[char]+=1
else:
map_secret[char]=1
for char in guess:
if char in map_secret.keys() and map_secret[char] >0:
map_secret[char]-=1
num_cow+=1
return str(num_bull)+"A"+str(num_cow)+"B"