回溯,用set去重

# -*- coding:utf-8 -*-
from collections import Counter
class Solution:
    def Permutation(self, ss):
        # write code here
        arr = [c for c in ss]
        n = len(arr)
        if n <= 1:
            return [ss]
        res = set()
        hashMap = Counter(arr)
#         print("hashMap:", hashMap)
        def backtrack(arr, idx, track):
            if len(track) == len(arr):                
                res.add(''.join(track))
                return
            for i in range(0, len(arr)):
#                 print("track:", track)
#                 print("hashMap:", hashMap, "value:", hashMap.get(arr[i], 0))
                if i == idx or hashMap.get(arr[i], 0) == 0:
#                     print("bingo")
                    continue
                track.append(arr[i])
                hashMap[arr[i]] -= 1
                backtrack(arr, i, track)
                track.pop()
                hashMap[arr[i]] += 1
            return 
        backtrack(arr, -1, [])
        return sorted(list(res))