迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中的排列

作者:迹忆客 最近更新:2024/03/16 浏览次数:

在 JavaScript 中,有 slicereducefiltersubstring 和更多方法来缓解置换给定字符串或数组的所有可能试验的基本问题。

在这里,我们将展示如何从给定的输入中提取数组和字符串的组合。主要重点是将每个文字从数组或字符串中分开,并一一交换其他文字。

在以下部分中,我们将使用必要的代码示例详细讨论该过程。


给定数组的排列

我们将初始化一个函数 permute,其中包含另一个函数 backtrack。将递归调用此函数 backtrack 以执行正确的组合集。

代码片段:

var permute = function(nums) {
  var result = [];
  var backtrack = (i, nums) => {
    if (i === nums.length) {
      result.push(nums.slice());
      return;
    }
    for (let j = i; j < nums.length; j++) {
      [nums[i], nums[j]] = [nums[j], nums[i]];
      backtrack(i + 1, nums);
      [nums[i], nums[j]] = [nums[j], nums[i]];
    }
  } backtrack(0, nums);
  console.log(result);
  return result;
};
permute([1, 2, 3]);

输出:

这里的主要动作定义了交换部分,我们在其中将每个文字彼此交换一次试验(例如 [1,2,3])并提出可能的组合。

从试验 [1,2,3],我们将得到 [1,2,3] & [1,3,2]。这部分将被执行,直到每个文字都得到检查。

在切换到下一个试验之前,我们通过再次交换返回到基本试验(1,2,3)(因为最后一个组合是 [1,3,2])。这就是回溯的操作方式。

形成一棵树以查看可能的试验,并且树的长度等于数组的长度。最初,我们执行一个 DFS 来解决这个问题,然后递归回溯过程来解决这个问题。


给定字符串的排列

在字符串的情况下,我们将首先拆分字符串,然后我们将使用 reduce 方法通过递归调用 permutationString 函数来逐个连接可能的试验。

代码片段:

var permutationString = str => {
  if (str.length <= 2)
    return str.length === 2 ? [str[0] + str[1], str[1] + str[0]] : [str];
  return str.split('').reduce(
      (accumulator, letter, i) => accumulator.concat(
          permutationString(str.slice(0, i) + str.slice(i + 1))
              .map(val => letter + val)),
      []);
};
console.log(permutationString('abcd'));

输出:

根据累加器功能,我们正在保留每个组合。

我们使用 slice 方法来锁定某个字母表,并根据之前初始化的基本情况添加其余的字母表。最后,输出结果是所有预期模式的组合形式。

阶乘公式推导出方法排列,因此该问题的解决方案通常会遇到较大情况下的运行时错误。但是可以通过这种方式指导具有适当可视化问题的基本推理。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 JavaScript 中将 Base64 转换为图像

发布时间:2024/03/16 浏览次数:77 分类:JavaScript

将 Base64 字符串转换为图像的最简单方法是调用启动图像构造函数并将 base64 字符串作为图像源的函数。此解决方案需要最少的代码行和努力来获得更好的结果。此外,还有一些复杂的实

在 JavaScript 中操作图像

发布时间:2024/03/16 浏览次数:175 分类:JavaScript

本文将介绍 JavaScript 中的图像处理功能。我们将使用 CamanJS 这是一个 JavaScript 库来操作图像。

在 JavaScript 中交换图像

发布时间:2024/03/16 浏览次数:134 分类:JavaScript

本教程展示了如何使用 JavaScript 简单地交换图像。你将学习如何使用不同的方法交换图像,例如使用 onclick、鼠标单击和按钮单击。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便