是个传颂厨

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
给你一个仅有小写字母组成的字符串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)

 

posted on 2016-04-24 22:23  是个传颂厨  阅读(184)  评论(0)    收藏  举报