再帰的に文字列の配列を実現する方法

2884 ワード

タイトル記述文字列を入力し、辞書順にその文字列のすべての配列を印刷します.例えば文字列abcを入力すると、文字a,b,cで並べられるすべての文字列abc,acb,bac,bca,cab,cbaが印刷される.
説明の入力:9を超えない文字列を入力します(文字が重複する可能性があります)、文字には大文字と小文字のみが含まれます.
# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        if len(ss) <= 1:
            return ss
        res = set()
        #      ,       ,        a,b,c...,      
        for i in range(len(ss)):
            for j in self.Permutation(ss[:i] + ss[i+1:]): #        ,      (    )
                res.add(ss[i] + j) #          add(),      (       ,        , baa,baa)
        return sorted(res)         # sorted()           ,        list