码迷,mamicode.com
首页 > 其他好文 > 详细

获取字符串全排列 或者 只输出k个的组合

时间:2017-08-17 14:25:12      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:pytho   highlight   长度   result   获取   pre   res   nbsp   abc   

已知长度为n的字符串,获取所有可能的全排序 n!

def test(arr):
    length = len(arr)
    if length<=1:
        return arr
    res = []
    for i in range(length):
        temp = list.copy(arr)
        del(temp[i])
        res += [arr[i]+j for j in test(temp)]
    return res

print(test([‘a‘,‘b‘,‘c‘,‘d‘]))

  result:

G:\python\study>python hello.py
[‘abcd‘, ‘abdc‘, ‘acbd‘, ‘acdb‘, ‘adbc‘, ‘adcb‘, ‘bacd‘, ‘badc‘, ‘bcad‘, ‘bcda‘, ‘bdac‘, ‘bdca‘, ‘cabd‘, ‘cadb‘, ‘cbad‘, ‘cbda‘, ‘cdab‘, ‘cdba‘, ‘dabc‘, ‘dacb‘, ‘dbac‘, ‘dbca‘, ‘dcab‘, ‘dcba‘]

 

输出k个的排列组合,k不大于字符串长度 n!/(n-k)!

def test(arr,k):
    length = len(arr)
    if k<=1:
        return arr
    res = []
    for i in range(length):
        temp = list.copy(arr)
        del(temp[i])
        res += [arr[i]+j for j in test(temp,k-1)]
    return res

print(test([‘a‘,‘b‘,‘c‘,‘d‘],2))

  result:

G:\python\study>python hello.py
[‘ab‘, ‘ac‘, ‘ad‘, ‘ba‘, ‘bc‘, ‘bd‘, ‘ca‘, ‘cb‘, ‘cd‘, ‘da‘, ‘db‘, ‘dc‘]

 

获取字符串全排列 或者 只输出k个的组合

标签:pytho   highlight   长度   result   获取   pre   res   nbsp   abc   

原文地址:http://www.cnblogs.com/cshunter/p/7381071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!