class Solution {
public:
vector<string> permutation(string s) {
}
};
剑指 Offer 38. 字符串的排列
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"]
限制:
1 <= s 的长度 <= 8
原站题解
golang 解法, 执行用时: 48 ms, 内存消耗: 7.6 MB, 提交时间: 2021-06-22 14:48:05
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] } }