排列方案的生成方法: 根据字符串排列的特点,考虑深度优先搜索所有排列方案。即通过字符交换,先固定第 1位字符( n 种情况)、再固定第2位字符( n−1 种情况)、... 、最后固定第 n 位字符( 1 种情况)。
class Solution:
def permutation(self, s: str) -> List[str]:
s = [c for c in s]
def backtrace(start):
if start==len(s):
res.append(''.join(s))
return
dic = set()
for i in range(start,len(s)):
if s[i] in dic:
continue
dic.add(s[i])
s[start],s[i] = s[i],s[start]
backtrace(start+1)
s[start],s[i] = s[i],s[start]
res = []
backtrace(0)
return res