我试图创建一个计算所有可能的字母组合的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
我的代码中有什么机会显示所有可能的组合,而不是其中的一些?
提前致谢。
答案 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"
]
*/