题解 | #全排列#

全排列

https://www.nowcoder.com/practice/b3ac35e1569e4601b6d3957dd337e70b

        const _permute = string => {
            if(string.length ===1)  return [string]
            const result =[]
            for(let s of string){
                //拆解字符串,然后递归返回唯一的元素
                const arr = string.split('').filter(str=>str!==s)
                const permutations = _permute(arr.join(''));
                    permutations.forEach((item) => {
                        result.push(s + item);
                    })
            }
            return result
}
  1. 首先,检查输入的字符串 string 的长度是否为 1。如果是,则直接将该字符串作为结果数组的一项返回。
  2. 如果字符串长度大于 1,则创建一个空的数组 result,用于存储最终的全排列结果。
  3. 接下来,使用 for..of 循环遍历字符串中的每个字符 s。
  4. 在循环内部,通过拆解字符串并过滤掉当前字符 s,得到剩余字符组成的数组 arr。这样可以确保在递归调用时,传入的参数是正确的。
  5. 然后,对剩余字符数组 arr 进行递归调用 _permute(arr.join(''))。这会返回一个包含剩余字符的所有排列组合的数组,命名为 permutations。
  6. 使用 forEach 循环遍历 permutations 数组中的每个元素 item。
  7. 对于每个元素 item,将当前字符 s 与 item 拼接起来,并将结果添加到 result 数组中。
  8. 循环结束后,返回结果数组 result,其中包含了所有可能的全排列组合。
全部评论

相关推荐

评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务