递归生成串的全排列序列,注意在过程中判重就好
class Solution:
def permutation(self, s: str) -> List[str]:
res = []
s = list(s)
def dfs(s, cur):
if cur == len(s):
res.append(''.join(s))
d = set()
for i in range(cur, len(s)): #注意这里是从cur开始的而不是cur+1
if s[i] in d: #这里是为了去掉类似于abb这种字符串的重复
continue
d.add(s[i])
s[i], s[cur] = s[cur], s[i]
dfs(s, cur+1)
s[cur], s[i] = s[i], s[cur]
dfs(s, 0)
return res