劍指Offer(Python多種思路實現):字符串的排列

劍指Offer(Python多種思路實現):字符串的排列

面試38題:

題:字符串的排列

題目:輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。

解題思路一:把字符串看成兩部分:第一部分是它的第一個字符;第二部分是後面的所有字符。 遞歸

class Solution:
    def Permutation(self, ss):
        # write code here
        if not ss:
            return []
        if len(ss)==1:
            return list(ss)
        pStr=[]
        charlist=list(ss)
        charlist.sort()
        
        for i in range(len(charlist)):
            if i>0 and charlist[i]==charlist[i-1]:
                continue
            temp=self.Permutation(''.join(charlist[:i])+''.join(charlist[i+1:]))
            for j in temp:
                pStr.append(charlist[i]+j)
        return pStr

解題思路二:

def Permutation(self, ss):
    # write code here
    from itertools import permutations
    if not ss:
        return []
    return sorted(list(set([''.join(x) for x in permutations(ss)])))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章