liuguanyu / quiz-every-meeting

8 stars 0 forks source link

2018-7-24 #22

Open mileOfSunshine opened 6 years ago

mileOfSunshine commented 6 years ago

已知字符串里的字符是互不相同的,现在任意组合,比如ab,则输出aa,ab,ba,bb,编程按照字典序输出所有的组合。注意啦,输出每组的字符长度与输入字符长度一致,比如输入abc长度为3,那么输出长度也为3。

例子:

输入 abc 输出结果 aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc

chunpu commented 6 years ago
function main(str, needSize) {
    needSize = needSize || str.length
    var arr = []
     if (needSize === 1) {
         return str.split('').sort()
     }
    var subArr = main(str, needSize - 1)
    for (let i = 0; i < str.length; i++) {
        for (let j = 0; j < subArr.length; j++) {
            arr.push(str[i] + subArr[j])
        }
    }
    return arr.sort()
}

console.log(main('abc'))
liuguanyu commented 6 years ago

会议结束来一发,发现小通已经做出来了

function foo(str) {
  var lst = str.split('').sort()
  var length = lst.length

  var rets = []

  var assumble = function (prev, count) {
    for (var i = 0; i < length; ++i) {
      var temp = [].concat(prev)

      if (count > 1) {
        assumble([lst[i]].concat(prev), count - 1)
      } else {
        rets.push([lst[i]].concat(prev).join(""))
      }
    }
  }

  assumble([], length)
  return rets.sort()
}
console.log(foo('cba'))