今天我在思考这个问题的所有字谜,我想出了下面的伪代码(Python的3.2):生产从字符串蟒蛇
def anagrams(string):
for c in string:
anagram = c + anagram(string - {c}) # remove the char from its position in the string
print(anagram)
return
def main():
word = "abcd"
anagrams(word)
return
不过,我想知道一个Python化的方式来做这个操作: anagram = c + anagram(string - {c})
如何从字符串中删除该字符?因此,例如:
"abc" -> 'a' + "bc" -> 'a' + 'b' + "c" -> 'a' + 'b' + 'c' = 'abc'
+ "cb" -> 'a' + 'c' + "b" -> 'a' + 'c' + 'b' = 'acb'
-> 'b' + "ac" -> 'b' + 'a' + "c" -> 'b' + 'a' + 'c' = 'bac'
+ "ca" -> 'b' + 'c' + "a" -> 'b' + 'c' + 'a' = 'bca'
-> 'c' + "ba" -> 'c' + 'b' + "a" -> 'c' + 'b' + 'a' = 'cba'
+ "ab" -> 'c' + 'a' + "b" -> 'c' + 'a' + 'b' = 'cab'
感谢
为什么使用下划线作为变量名称,而不是像'permutation'或其他什么东西一些描述性的东西......? (否则,很好的答案) – mgilson 2012-08-16 14:41:23
BigYelloCactus,我喜欢你的答案,但我需要一个递归方法,如图所示,可以使用任何编程语言(又名:C) – cybertextron 2012-08-16 14:42:59
变量的名称* always *很重要。它可以让用户知道变量*代表的是什么。使用'_'表示“我不打算使用这个函数的输出”,但是你会*使用输出。 – mgilson 2012-08-16 14:43:58