python 字符串排列dfs
字符串的排列
http://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7
题目描述
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
思路:dfs
定义一个set保持在当前位置已经访问过的字符
class Solution:
def Permutation(self, s):
def bfs(visited, unvisited):
if len(unvisited) == 0:
res.append(visited)
return
d = set()
for i, x in enumerate(unvisited):
if x not in d:
d.add(x)
bfs(visited+x, unvisited[:i]+unvisited[i+1:])
res = []
bfs('', s)
return res
print(Solution().Permutation('aab'))
查看16道真题和解析