输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = “abc”
输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
限制:
1 <= s 的长度 <= 8
class Solution:
def permutation(self, s: str) -> List[str]:
# print(s)
res = []
# 将字符串转化成列表
c = list(s)
def dfs(x):
if x == len(c) - 1:
print("".join(c))
res.append("".join(c))
return
set1 = set()
for i in range(x, len(c)):
# 重复,因此剪纸
# print(set1)
if c[i] in set1 :
continue
set1.add(c[i])
print(set1)
# print(i,x)
# 交换,将c[i]固定在第x位
c[i],c[x] = c[x],c[i]
# 开启固定第x + 1位字符
dfs(x + 1)
print(x + 1)
# 恢复交换
c[i],c[x] = c[x],c[i]
dfs(0)
return res