字符串的排列

image.png
# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        # write code here
        self.ret = []
        if len(ss):
            s = sorted(ss)
            self.book = [0]*len(s)
            self.dfs(s, 0 ,[])
        return sorted(list(set(self.ret)))

    def dfs(self,s, cur, tmp):
        if cur == len(s):
            ans = "".join(tmp)
            self.ret.append(ans)
        else:
            for i in range(len(s)):
                if self.book[i] == 0:
                    tmp.append(s[i])
                    self.book[i] = 1
                    self.dfs(s, cur+1,tmp)
                    self.book[i] = 0
                    del tmp[-1]
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本系列导航:剑指offer(第二版)java实现导航帖](http://www.jianshu.com/p/010...
    ryderchan阅读 1,629评论 0 1
  • 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能...
    juexin阅读 361评论 0 0
  • 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...
    Gxxx_xx阅读 3,977评论 3 0
  • 思路:首先求出低一个位置所有可能的字符,即把第一个字符和后面的字符交换,第一个字符确定后,再确定第二个位置,也是执...
    shuixingge阅读 154评论 0 0
  • 问题描述: 输入一个字符串,打印出该字符串的所有排列。例如,输入字符串”abc”,则输出有字符’a’,’b’,’c...
    dreamsfuture阅读 1,645评论 0 0