我在一次工作面试中被问到这个问题。我一直在考虑它,但找不到解决方案。
这就是问题所在:您知道密码仅由字母组成且顺序良好,这意味着密码中的字符按字母顺序排列。
例如,4 位密码可以是“abxz”或“aBkZ”,但不能是“aAxz”或“baxz”。
编写一个函数,根据其长度生成所有有效密码。不要忘记它必须生成所有可能的大小写组合。例如:“aBcd”、“Abcd”、“abcd”、“AbCd”都是不同的有效密码。
我认为算法必须是递归的。然而,到目前为止,没有任何效果。我试过以下。
def func(number, start_letter ='A', match = ''):
if number == 0:
print(match)
else:
for i in range(ord(start_letter), 70):
func(number-1, chr(ord(start_letter)+1),match + chr(i))
请把我从痛苦中拯救出来。
编辑:我不会批准使用 itertool 的解决方案。我认为其他解决方案对语言的依赖性较小,可以很容易地用其他语言编写。