面试题 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
    
原文地址:https://www.cnblogs.com/xxxsans/p/13806894.html