字符串_字符串的排列(有点难)
参考:
https://blog.csdn.net/qq_20141867/article/details/80933497
https://blog.csdn.net/qq_31715255/article/details/99413860
法1:
# -*- coding:utf-8 -*-
class Solution:
def Permutation(self, ss):
if len(ss) <=0:
return []
res = list()
self.perm(ss,res,'')
uniq = list(set(res))
return sorted(uniq)
def perm(self,ss,res,path):
if ss=='':
res.append(path)
else:
for i in range(len(ss)):
self.perm(ss[:i]+ss[i+1:],res,path+ss[i])
法2
# -*- coding:utf-8 -*-
class Solution:
def Permutation(self, ss):
# write code here
out = []
if len(ss) == 0:
return out
charlist = list(ss)
self.permutation(charlist, 0, out)
res = ["".join(out[i]) for i in range(len(out))]
res.sort()
return res
def permutation(self, ss, begin, out):
if begin == len(ss)-1:
out.append(ss[:])
else:
for i in range(begin,len(ss)):
if ss[begin]==ss[i] and begin!=i:
continue
else:
ss[begin], ss[i] = ss[i], ss[begin]
self.permutation(ss, begin+1, out)
ss[begin], ss[i] = ss[i], ss[begin]