嗨,我正在寻找用 Javascript 生成一组字符的所有可能性。到目前为止,我的代码根据字符集“abc”和长度 3 生成此数组:
[“abc”、“acb”、“bac”、“bca”、“cab”、“cba”]
但是我想要生成的是字符集“abc”最大长度为 3 的所有可能性。a-ccc:
[“a”、“b”、“c”、“aa”、“ab”、“ac”、“ba”、“bb”、“bc”、“ca”、“cb” ,“cc”,“aaa”,“aab”,“aac”,“aba”,“abb”,“abc”....“ccc”]
这是我用来生成第一个数组的代码,任何帮助将不胜感激。
var 排列 = (function() {
var 结果 = [];
函数 doPermute(输入、输出、使用、大小、级别) {
如果(大小==级别){
var word = output.join('');
结果.push(word);
返回;
}
等级++;
for (var i = 0; i < input.length; i++) {
if (used[i] === true) {
继续;
}
使用[i]=真;
输出.推(输入[i]);
doPermute(输入、输出、使用、大小、级别);
使用[i]=假;
输出.pop();
}
}
返回 {
getPermutations:函数(输入,大小){
var chars = input.split('');
var 输出 = [];
var 使用 = new Array(chars.length);
doPermute(字符、输出、已使用、大小、0);
返回结果;
}
}
})();
功能测试(字母,大小){
var testResults = permutate.getPermutations(字母, 大小);
控制台.log(测试结果);
};
测试('abc',3)
最佳答案
试试这个:)
function allPermutations(letters,maxSize){
function permutations(letters,size){
var results=[];
for(var i=0;i<letters.length;i++){
var res=letters[i];
if(size===1){
results.push(res);
}else{
var rest=permutations(letters,size-1);
for(var j=0;j<rest.length;j++){
results.push(res+rest[j]);
}
}
}
return results;
};
var results=[];
for(var i=1;i<=maxSize;i++){
results=results.concat(permutations(letters,i));
}
return results;
}
console.log(allPermutations('abc',3));
关于Javascript - 排列和可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166104/