2019-07-05劍指 字符串的排列

有重復(fù)字符的全排列
整整30min 。糾結(jié)的點(diǎn)在于如何轉(zhuǎn)換為list,終止條件

# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        s=list(ss)
        s.sort()
        tmp=self.permu(s)
        res=[]
        for c in tmp:
            res.append("".join(c)) #如何將結(jié)果轉(zhuǎn)換為字符串
        return res


    def permu(self,s):
        if len(s)==1:return [s]  #遞歸的終止條件出錯(cuò)
        res=[]
        for i in range(len(s)):
            if i==0 or s[i]!=s[i-1]:
                for p in self.permu(s[:i]+s[i+1:]):
                    res.append([s[i]]+p)
        return res

借鑒的是原來(lái)的有些奇葩的思路

# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        if not ss: return []  # 初始條件直接輸入空字符串
        s=list(ss)
        s.sort()
        tmp=self.permu(s)
        res=[]
        for c in tmp:
            res.append("".join(c)) #如何將結(jié)果轉(zhuǎn)換為字符串
        return res


    def permu(self,s):
        # if len(s)==1:return [s]  #遞歸的終止條件出錯(cuò)
        res=[]
        for i in range(len(s)):
            if i==0 or s[i]!=s[i-1]:
                for p in self.permu(s[:i]+s[i+1:]):
                    res.append([s[i]]+p)
        return res or [[]] # 當(dāng)s為空時(shí)的巧妙的遞歸條件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容