Javascript (JS)显示特定字符串中所有可能的字符组合,每个字符组合的输出具有预定的最大长度

Javascript (JS)显示特定字符串中所有可能的字符组合,每个字符组合的输出具有预定的最大长度,javascript,algorithm,Javascript,Algorithm,我有以下字符串:“12345” (字符串也可以是'abcd',但为了简化起见,我在这里使用数字) 目标:我想显示字符串中所有可能的字符组合,其中每个组合的最大长度是预先确定的 例如,我们假设最大长度为3个字符 输出将显示以下内容(无论是哪个论坛,都可以是数组或其他任何内容): “1”、“2”、“3”、“4”、“5”、 “11”、“11”、“13”、“14”、“15”, “21”、“22”、“23”、“24”、“25” “31”、“32”、“33”、“34”、“35” “41”、“42”、“43”

我有以下字符串:“12345” (字符串也可以是'abcd',但为了简化起见,我在这里使用数字)

目标:我想显示字符串中所有可能的字符组合,其中每个组合的最大长度是预先确定的

例如,我们假设最大长度为3个字符

输出将显示以下内容(无论是哪个论坛,都可以是数组或其他任何内容):
“1”、“2”、“3”、“4”、“5”、
“11”、“11”、“13”、“14”、“15”,
“21”、“22”、“23”、“24”、“25”
“31”、“32”、“33”、“34”、“35”
“41”、“42”、“43”、“44”、“45”
“51”、“52”、“53”、“54”、“55”
“111”、“112”、“113”、“114”、“115”
“121”、“122”、“123”、“124”、“125”

“551”“552”“553”“554”“555”

实现此任务的正确方法(伪代码?)是什么? 我是用JS写的,但是执行语言对我来说不是很重要

花了几天时间试图解决这个问题,但没有成功:-(

我设法找到了一种计算输出组合总量的方法。
-在我的示例中,字符串为“12345”,字符组合输出的最大长度为3…使用以下公式,总数为155:
5^1+5^2+5^3=155


非常感谢您对完成此任务的任何帮助!

该算法中需要使用两个算法函数

如果我不正确,请让我知道

首先生成所有字符串的组合。我重写了一个原始的python代码

var getAllStringCombination=函数(inputList、returnList、newItem){
如果(inputList.length==0){
returnList.push(newItem);
退货清单;
}否则{

对于(让i=0;i使用递归函数迭代每个要枚举的字符数。这只需将结果输出到控制台并将其存储在数组中:

var arr = [];
var index = 0;

function recursive(istr,curstr,count) {
  count--;
  for(var i=0; i<istr.length; i++) {
    var str = curstr + istr.charAt(i);
    if(count>0) {
      recursive(istr,str,count);
    }
    else {
      console.log(str);    // showing answers here
      arr[index++] = str;  // or they are in the array here
    }
  }
}

function enumerate(str, n) {
  for(var i=0;i<n;i++) {
    recursive(str,"",i+1);
  }
} 

enumerate("12345",3);
var arr=[];
var指数=0;
递归函数(istr、curstr、count){
计数--;
对于(var i=0;i0){
递归(istr、str、计数);
}
否则{
console.log(str);//在此处显示答案
arr[index++]=str;//或者它们在这里的数组中
}
}
}
函数枚举(str,n){
对于(var i=0;i
var binarySubset = function(inputList){
var res = []
for (let i = 0; i < Math.pow(2, inputList.length); i++) {
    let bin = (i).toString(2), set = [];
    bin = new Array((inputList.length-bin.length)+1).join("0")+bin;
    for (let j = 0; j < bin.length; j++) {
        if (bin[j] === "1") {
            set.push(inputList[j]);
        }
    }
    res.push(set);
}
return res;
}
var arr = [];
var index = 0;

function recursive(istr,curstr,count) {
  count--;
  for(var i=0; i<istr.length; i++) {
    var str = curstr + istr.charAt(i);
    if(count>0) {
      recursive(istr,str,count);
    }
    else {
      console.log(str);    // showing answers here
      arr[index++] = str;  // or they are in the array here
    }
  }
}

function enumerate(str, n) {
  for(var i=0;i<n;i++) {
    recursive(str,"",i+1);
  }
} 

enumerate("12345",3);