面试题 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