机试刷题_面试题 08.08. 有重复字符串的排列组合【python】
面试题 08.08. 有重复字符串的排列组合
class Solution:
def backtrack(self,res,state,choices,selected):
if len(state)==len(choices):
res.append("".join(list(state)))
return
duplicated = set()
for i,choice in enumerate(choices):
if choice not in duplicated and not selected[i]:
duplicated.add(choice)
selected[i] = True
state.append(choice)
self.backtrack(res,state,choices,selected)
selected[i] = False
state.pop()
def permutation(self, S: str) -> List[str]:
res = []
self.backtrack(res,state=[],choices=list(S),selected=[False]*len(S))
return res