计算所有可能的字母组合

时间:2014-09-15 15:31:04

标签: javascript

我试图创建一个计算所有可能的字母组合的JavaScript。

我到目前为止做到了这一点:

    var input = window.prompt("What to calculate?", "");
    var letters = input;
    var combi = [];
    var temp = "";
    var letLen = Math.pow(2, letters.length);
    for (var i = 0; i < letLen; i++){
        temp = "";
        for (var j = 0; j < letters.length; j++){
            if ((i & Math.pow(2, j))){
                temp += letters[j];
            }
            if (temp !==""){
                combi.push(temp);
            }
        }
    document.write(combi.join(" "));
    alert(combi.length);

结果是:r g rg b rb gb rgb

但是,有更多可能的组合,如bgr brg br gr bg

我的代码中有什么机会显示所有可能的组合,而不是其中的一些?

提前致谢。

1 个答案:

答案 0 :(得分:1)

可能不是最有效的方式..

function permute(str) {
    var s, c, i, e, n, ce = [];
    if (str) {
        for (i = 0; i < str.length; ++i) {
            c = str.charAt(i);
            s = str.slice(0, i) + str.slice(i + 1);
            ce.push(c); // comment out this line if you always want every char
            if (s) {
                e = permute(s);
                for (n = 0; n < e.length; ++n) {
                    ce.push(c + e[n]);
                }
            }
        }
    }
    return ce;
}

permute('rgb');
/*
  [
      "r", "rg", "rgb", "rb", "rbg",
      "g", "gr", "grb", "gb", "gbr",
      "b", "br", "brg", "bg", "bgr"
  ]
*/