面试题 08.08. 有重复字符串的排列组合
有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。
示例1:
输入:S = “qqe”
输出:[“eqq”,“qeq”,“qqe”]
示例2:
输入:S = “ab”
输出:[“ab”, “ba”]
提示:
字符都是英文字母。
字符串长度在[1, 9]之间。
记录了三种方法:
1.建立一个记录表,在每次回溯的时候查看当前字符是否被使用过
2.每次回溯的时候就减去使用过的字符,不用建表
3.对字符串进行排序,如果两个字符相同,就使用剪枝,跳过放前循环
#本方法使用了一个额外的列表来记录每次回溯的时候,这个字符是否被使用过
from typing import List
class Solution:
def permutation(self, S: str) -> List[str]:
out = []
count = len(S)
def backtrack(combination,used):
if len(used) == count:
temp = ''.join(combination)
if temp not in out:
out.append(temp)