zoukankan      html  css  js  c++  java
  • javascript,排列组合

    输入参数 ‘abc',输出所有组合 ['abc','acb','bac','bca','cab','cba']

    思路:分为3列,第一列为  a, b,c ;第二列为a,b,c出去第一列选中过后的,比如第一列选了a,第二列就为b,c。以此类推。最终结果为每一列选中的字符串相加(路径)

    代码:

        function getList(data) {
          let result = []
          list(data)
          return result
          function list(a, data = '') { // a为原始数据,data为不包含此列的路径
            a = [...a] // 数据浅复制
            if (a.length === 1) {
              data += a[0]
              result.push(data) // 当最后一个的时候,把路径push进去
            }
            for (let i = 0; i < a.length; i++) {
              let now = a[i] // 此列选中
              now2 = data // 路径复制,data不可污染,保证此列循环,路径不变
              now2 += now // 从第一列到此列的路径
              let left = a.filter(it => it !== now) // 此列选中剩余的数据
              list(left, now2)
            }
          }
        }
        let data = getList('abcdefg')
        console.log(data)
  • 相关阅读:
    Vue购物车项目
    总结前端面试过程中最容易出现的问题
    Node.js
    浏览器前端优化
    计算机课程
    谈谈对前端的理解
    MySQL
    阿里云Centos+Django+Nginx+uWSGI
    Windows + Apache + WSGI 部署Django
    Django积木块11 —— 缓存
  • 原文地址:https://www.cnblogs.com/gsgs/p/9419538.html
Copyright © 2011-2022 走看看