输入一个字符串,打印出该字符串中字符的所有排列-python

dfs方法

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
复制代码
class Solution:
    def permutation(self, s: str) -> List[str]:
        if not s:
            return s
        chars = sorted(list(s))
        path, permutations = [], []
        visited = [False]*len(chars)
        self.dfs(chars, visited, path, permutations)
        return permutations

    def dfs(self, chars, visited, path, permutations):
        if len(chars) == len(path):
            permutations.append(''.join(path))
            return
        for i in range(len(chars)):
            if visited[i]:    # 每次从头开始全局检索,必须要设置使用标志位
                continue
            # check is used
            if i>0 and chars[i-1]==chars[i] and visited[i-1]==False:
                continue
            path.append(chars[i])
            visited[i] = True
            self.dfs(chars, visited, path, permutations)
            path.pop()
            visited[i] = False
复制代码

 

posted @   今夜无风  阅读(452)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-08-05 关键信息读写脚本
点击右上角即可分享
微信分享提示