题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路
- 利用for循环,不断地让每个字符去当各个位置的首字母
- 去重排序,返回结果
# -*- coding:utf-8 -*-
class Solution:
def Permutation(self, ss):
# write code here
if not ss:
return []
res=[]
self.str_sort(ss,res,'')
return sorted(set(res))
def str_sort(self,ss,res,path):
if not ss:
res.append(path)
else:
for i in range(len(ss)):
self.str_sort(ss[:i]+ss[i+1:],res,path+ss[i])
测试用例
if __name__=='__main__':
s=Solution()
ss="abc"
print(s.Permutation(ss))