zoukankan      html  css  js  c++  java
  • 面试题 08.08. 有重复字符串的排列组合

    有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。

    示例1:

    输入:S = "qqe"
    输出:["eqq","qeq","qqe"]
    示例2:

    输入:S = "ab"
    输出:["ab", "ba"]
    提示:

    字符都是英文字母。
    字符串长度在[1, 9]之间。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/permutation-ii-lcci

    from itertools import permutations 
    class Solution:
        def permutation(self, S: str) -> List[str]:
            a=permutations(S)
            return list(set([''.join(i) for i in a]))
        
    class Solution:
        def permutation(self, S: str) -> List[str]:
            res=[]
            s=sorted(S)
            vis=[0]*len(s)
            def dfs(a):
                if len(a)==len(s):
                    res.append(a)
                    return 
                for i in range(len(s)):
                    if vis[i]:continue
                    if i>0 and s[i]==s[i-1] and not vis[i-1]:continue#跳过重复的
                    vis[i]=1
                    dfs(a+s[i])
                    vis[i]=0
            dfs('')
            return res
        
  • 相关阅读:
    如何让json_decode解码变的更加强壮
    scp命令
    Centos7安装postgresql
    ubuntu安装Java环境
    ubuntu开放端口
    VMware安装Ubuntu
    redis主从安装
    redis主从学习
    redis集群学习
    C++ 09 顺序容器
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13806894.html
Copyright © 2011-2022 走看看