我在网上回答一些编程问题,这个问题让我很感兴趣。问题定义如下:
此代码按字典顺序打印字符串的所有排列。它有问题。通过修改或添加一行来查找并修复它!
输入:
输入由一行组成,其中包含一串小写字符,中间没有空格。它的长度最多为 7 个字符,并且它的字符按字典顺序排序。
输出:
字符串的所有排列在每一行中打印一个,按字典顺序列出。
def permutations():
global running
global characters
global bitmask
if len(running) == len(characters):
print(''.join(running))
else:
for i in xrange(len(characters)):
if ((bitmask>>i)&1) == 0:
bitmask |= 1<<i
running.append(characters[i])
permutations()
running.pop()
raw = raw_input()
characters = list(raw)
running = []
bitmask = 0
permutations()
有人可以为我回答并解释它是如何工作的吗?我对位掩码的应用并不熟悉。谢谢你。