我在这个页面上遇到了这个面试问题:(http://newworld-alex.blogspot.com/2009/03/facebook-interviewzz.html)
技术问题:在 python 中,给定某个单词的字符变体字典,例如 dictChars = {"e" : [E, 3], "x" : [X], "a" : [A, @], "m " : [M]}实现一个类似密码破解器的部分字符串置换生成器,即产生exaM, exAm, exAM, ex@m, ...。我在 Python 中实现了一个简单的 3 行递归解决方案。
我在 Python 中有一个解决方案,但我似乎不知道如何像他那样让它变成 3 行。
仅供参考,这是我目前的解决方案:
def allPossiblePasswords(password, mapping):
if len(password) == 0:
return [""]
else:
next = allPossiblePasswords(password[1:], mapping)
if password[0] in mapping:
return [c + n for c in mapping[password[0]] for n in next]
else:
return [password[0] + n for n in next]
提前致谢!