题解 | #字符串的排列#

字符串的排列

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进行字符排序

全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
11 1 评论
分享
牛客网
牛客企业服务