classSolution: defpermutation(self, s: str) -> List[str]: defbacktrack(s, i, n, res): if i == n: result.append(res) return
for j inrange(n): if visited[j] or (j > 0andnot visited[j-1] and s[j-1]==s[j]): continue visited[j] = True res += s[j] backtrack(list(s), i+1, n, res) visited[j] = False res = res[:-1] result = [] n = len(s) visited = [False]*n s = list(s) s.sort() backtrack(s, 0, n, "") return result