有重復(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í)的巧妙的遞歸條件