题解 | #字符串的排列#
字符串的排列
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进行字符排序