给你一个仅有小写字母组成的字符串s(len(s) < 10),请你输出s内的所有字母的全排列,每行输出一个, 按照字典序升序输出。 如:s="bbjd",则输出: bbdj bbjd bdbj bdjb bjbd bjdb dbbj dbjb djbb jbbd jbdb jdbb
本来想手写的,然后看了看大神们的解题。
利用 itertools模块(循环器),中的
permutations() (从'abcd'中挑选两个元素,比如ab, bc, ... 将所有结果排序,返回为新的循环器。
注意,上面的组合分顺序,即ab, ba都返回。)
然后用set弄掉重复的进行了。
import itertools s0 = itertools.permutations(s) s0 = sorted(list(set(s0))) for i in s0: print ''.join(i)