• Javascript 字符串全排列组合方法实现


    一、目标:

    把一个字符串中的字符重新排列生成新的字符串,例如, abc 总共有6种排列 (abc, acb, bac, bca, cab, cba)。

    二、思路:

    本文章只研究全排列的情况,比如,还是 abc 字符串,3个字符,则总共的排列组合方式应该有 n! 种,此处的 n 为3,则计算出来应该是6种。本文采用递归方式实现,基本思路是通过双循环来实现递归的主逻辑部分,外层循环 str,内层循环 n - 1 时的返回数组 preResult 部分,算法逻辑如下方流程图。
    首先,考虑递归如何产生,假如当 n = 1,即传参 str 的长度只有1时,则直接返回只有 str 的数组;当 n > 1时,则考虑 n 和 n - 1 方法返回数组的关系。可以想到,n 时多出的一个字符,来添加到 n - 1 返回数组中每个字符串的头部。

    三、代码

    // perm function
      var perm = function(s) {
        var result = [];
        if (s.length <= 1) {
          return [s];
        } else {
          for (var i = 0; i < s.length; i++) {
            var c = s[i];
            var newStr = s.slice(0, i) + s.slice(i + 1, s.length);
            var l = perm(newStr);
               
            for (var j = 0; j < l.length; j++) {
              var tmp = c + l[j];
              result.push(tmp);
            }
          }
        }
        return result;
      };  
    
    今天你学习了吗!!!
  • 相关阅读:
    123我爱你
    cs231n学习笔记(一)计算机视觉及其发展史
    Problem B: 字符串类(II)
    Problem A: 字符串类(I)
    Problem E: 新奇的加法运算
    Problem D: 判断两个圆之间的关系
    Problem C: 质心算法
    Problem B: 我们来做个Student类吧!
    Problem A: 克隆人来了!
    Problem H: STL——表达式求值
  • 原文地址:https://www.cnblogs.com/nayek/p/12498052.html
Copyright © 2020-2023  润新知