leetcode-46.全排列

113 阅读1分钟

46.全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

var permute = function(nums) {
    let arr = [];
    let res = [];
    function backtracking(nums, nums_len, used){
        // used是一个布尔数组,用来标记哪些数字已经被使用
        if(arr.length === nums_len){
            // 此时找到了一个完整的排列,push到res中
            res.push(Array.from(arr));
            return;
        }

        for(let i = 0; i < nums_len; i++){
            // 如果used[i]为true,表示数字 nums[i] 已经被使用,跳过当前循环
            if(used[i]) continue;
            // 将nums[i]添加到arr中,并将used[i]设为true
            arr.push(nums[i]);
            used[i] = true;
            // 递归
            backtracking(nums, nums_len, used);
            arr.pop();
            used[i] = false;
        }
    }
    backtracking(nums, nums.length, []);
    return res;
};

去除字符串中重复字符

function removeDuplicates(s) {
    let result = '';
    for (let char of s) {
        if (result.indexOf(char) === -1) {
            result += char;
        }
    }
    return result;
}

// 测试示例
const str1 = 'aabbcc';
const str2 = '哈 哈  还好  哈哈哈';

console.log(removeDuplicates(str1)); // 输出: 'abc'
console.log(removeDuplicates(str2)); // 输出: '哈 还好'