我正在尝试编写 python 代码来打印 powerset一个字符串,但遇到了一些错误。这是我得到的:
def getperm (string):
perm = []
if len(string) == 0:
perm.append("")
return perm
#if len(string) == 1:
# perm.append(string)
# perm.append("")
first = string[0]
print "first = " + str(first)
rem = string[1:len(string)]
print "rem = " + str(rem)
words = getperm(rem)
for word in words:
for i in range(len(word)):
temp = string[0:i] + first + string[i:len(string)]
print "temp = " + str(temp)
perm.append(temp)
return perm
if __name__=="__main__":
a = "ab"
mag = getperm(a)
print mag
我的预期输出是:
['', 'a', 'b', 'ab']
我的实际输出是:
[]
谁能帮我弄清楚这是怎么回事?这是 python 的一些细微差别,还是我的代码中存在错误?我认为我的代码应该没问题——我要结束第五版的 Cracking the coding interview
谢谢!
请您参考如下方法:
你想多了
这部分想做的太多了
for word in words:
for i in range(len(word)):
temp = string[0:i] + first + string[i:len(string)]
print "temp = " + str(temp)
perm.append(temp)
看看它到底应该有多简单
def get_powerset (string):
perm = []
if len(string) == 0:
perm.append("")
return perm
#if len(string) == 1:
# perm.append(string)
# perm.append("")
first = string[0]
print "first = " + str(first)
rem = string[1:len(string)]
print "rem = " + str(rem)
words = get_powerset(rem)
perm.extend(words)
for word in words:
perm.append(first+word)
return perm
if __name__=="__main__":
a = "ab"
mag = get_powerset(a)
print mag
现在你应该能够通过一点点重构让代码看起来更漂亮
