class Solution {
public:
vector<string> permutation(string S) {
}
};
面试题 08.08. 有重复字符串的排列组合
有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。
示例1:
输入:S = "qqe" 输出:["eqq","qeq","qqe"]
示例2:
输入:S = "ab" 输出:["ab", "ba"]
提示:
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 2.6 MB, 提交时间: 2021-06-01 15:11:00
func permutation(S string) []string { var ans []string backtrack_unique(0, []byte(S), &ans) return ans } func backtrack_unique(k int, list []byte, ans *[]string) { if k == len(list) { *ans = append(*ans, string(list)) return } hash := map[byte]struct{}{} for i := k; i < len(list); i++ { if _, ok := hash[list[i]]; ok { continue } hash[list[i]] = struct{}{} list[i], list[k] = list[k], list[i] backtrack_unique(k+1, list, ans) list[i], list[k] = list[k], list[i] } }