果然昨天焦虑了,嗯 ,其实最然方法不一定好,但是理一理思路还是清晰的,首先扫描一遍secret 与对应guess位置比较,完全相同肯定是a,这个时候要count+1同时需要记录下这个位置,如果不相同,把数值记录下来。第二遍扫描guess,如果是a的位置跳过,如果不是,这个数值如果存在再字典中,字典中数目-1,代码如下:
class Solution(object):
def getHint(self, secret, guess):
"""
:type secret: str
:type guess: str
:rtype: str
"""
if len(secret) == 0:
return "0A0B"
zd = {}
zda = []
counta = 0
countb = 0
for i in range(len(secret)):
if i < len(guess):
if guess[i] == secret[i]:
counta += 1
zda.append(i)
else:
if secret[i] not in zd:
zd[secret[i]] = {i}
else:
zd[secret[i]].add(i)
for i in range(len(guess)):
if i not in zda:
if guess[i] in zd:
countb += 1
zd[guess[i]].pop()
if len(zd[guess[i]]) == 0:
del zd[guess[i]]
return str(counta) + "A" + str(countb) + "B"
网友评论