无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。
示例1:
输入:S = "qwe" 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]
示例2:
输入:S = "ab" 输出:["ab", "ba"]
示例代码1:
class Solution:
def permutation(self, S: str) -> List[str]:
if not S:
return []
res = []
path = ''
def back_track(S, path, res):
if S == '':
res.append(path)
return
for i in range(len(S)):
cur = S[i]
back_track(S[:i] + S[i+1:], path+cur, res)
back_track(S, path, res)
return res
解题思路 :
回溯法其实就是对一个树形图的深度遍历dfs ,我们在每次进行回溯的时候需要对每个点保存两个变量
1、path:局部变量,记录了包含了当前节点的路径(包含了当前节点)
2、res:全局变量,记录满足条件的所有路径