三个月算法进阶--day68
目录
纯递归与dfs
dfs基本框架
if not s:
return
ans = []
def dfs(args):
if xxx == xxx:
ans.append(yyy)
return
pass
dfs(args)
return ans
记录
leetcode剑指offer第38题字符串的排列
字符交换
class Solution:
def permutation(self, s: str) -> List[str]:
if not s:
return []
s = list(s)
ans = []
def dfs(x):
if x == len(s) - 1:
ans.append(''.join(s))
return
dic = set()
for i in range(x, len(s)):
if s[i] in dic:
# 剪枝
continue
s[i], s[x] = s[x], s[i]
dic.add(s[x])
dfs(x+1)
s[i], s[x] = s[x], s[i]
dfs(0)
return ans
dfs和回溯
有无状态重置