题解 | #字符串的排列#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
# -*- coding:utf-8 -*-
class Solution:
def Permutation(self, ss):
# write code here
if len(ss) <= 1:
return [ss]
results = []
unique_ss = list(set([c for c in ss]))
unique_ss.sort()
for c in unique_ss:
children_results = self.Permutation(ss.replace(c, "", 1))
results.extend([c+r for r in children_results])
return results 纯递归的方法,代码简单
ss的排列组合,等价于ss中不重复的字母拼接除去该字母的子集的排列组合
例如对"aab"做递归: func("aab") = ['a'+func("ab"), 'b'+func("aa")] (因为这里有重复的a,独立的字母只有a和b两种)
这里直接使用python的集合进行去重。在测试的时候发现系统有检测输出字典顺序,加入了sort进行字符排序

