列表

详情


面试题 08.07. 无重复字符串的排列组合

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。

示例1:

 输入:S = "qwe"
 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]

示例2:

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

提示:

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

原站题解

去查看

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

golang 解法, 执行用时: 60 ms, 内存消耗: 8.9 MB, 提交时间: 2021-06-01 10:53:27

func permutation(S string) []string {
    if S == "" {
        return []string{}
    }
    ans := make([]string, 0)
    backtrack([]byte(S), 0, &ans)
    return ans
}

func backtrack(b []byte, first int, ans *[]string) {
    if first == len(b) {
        *ans = append(*ans, string(b))
    }
    for i := first; i < len(b); i++ {
        b[first], b[i] = b[i], b[first]
        backtrack(b, first+1, ans)
        b[i], b[first] = b[first], b[i]
    }
}

上一题