递归,将字符串的字符依次加入结果集中,在递归中将结果加入到集合中

# 按层递归, 递归 在 s > e 时结束, s == e 时操作
for i in range(s, e):
  dfs(s + 1, t)
# 依次递归, 递归条件在 s > e 时结束, 在 s <= e 时操作
for i in range(s, e):
  dfs(i + 1, t)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @return string字符串一维数组
#
class Solution:
    def generatePermutation(self , s: str) -> List[str]:
        # write code here
        res = set()
        def dfs(idx, t):
            nonlocal res
            if idx > len(s):
                return
            res.add("".join(t))
            for i in range(idx, len(s)):
                dfs(i + 1, t + [s[i]])
        dfs(0, [])
        return list(res)