Javascript (JS)显示特定字符串中所有可能的字符组合,每个字符组合的输出具有预定的最大长度
我有以下字符串:“12345” (字符串也可以是'abcd',但为了简化起见,我在这里使用数字) 目标:我想显示字符串中所有可能的字符组合,其中每个组合的最大长度是预先确定的 例如,我们假设最大长度为3个字符 输出将显示以下内容(无论是哪个论坛,都可以是数组或其他任何内容):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”
“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);