列表

详情


面试题 08.08. 有重复字符串的排列组合

有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。

示例1:

 输入:S = "qqe"
 输出:["eqq","qeq","qqe"]

示例2:

 输入:S = "ab"
 输出:["ab", "ba"]

提示:

  1. 字符都是英文字母。
  2. 字符串长度在[1, 9]之间。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<string> permutation(string S) { } };

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]
	}
}

上一题