gpt4 book ai didi

javascript - 获取字符串的所有组合

转载 作者:行者123 更新时间:2023-11-30 06:14:58 25 4
gpt4 key购买 nike

我正在尝试在 JavaScript 中创建一个函数,给定一个字符串将返回所有可能的字母组合的数组,每个字母最多使用一次,从最短的开始。例如,对于字符串 ABC,它将返回:

A
B
C
AB
AC
ABC

我可以像这样使用循环:

for(i=0; i<string.length; i++) {
//add string[i]
}
for(i=0; i<string.length; i++) {
for(a=i; a<string.length; a++) {
//add string[i]+string[a]
}
}
for(i=0; i<string.length; i++) {
for(a=i; a<string.length; a++) {
for(b=a; b<string.length; b++) {
//add string[i]+string[a]+string[b]
}
}
}

但我不知道字符串的长度,所以不知道要使用多少个循环。

有什么想法吗?

编辑:我不是在要求排列,不应该同时返回 abc 和 acb。此外,最短的在数组中排在第一位也很重要。

这不是作业。这是用于解决“熄灯”类型游戏的程序。

最佳答案

这是一个我认为非常容易理解的递归解决方案。

var tree = function(leafs) {
var branches = [];
if (leafs.length == 1) return leafs;
for (var k in leafs) {
var leaf = leafs[k];
tree(leafs.join('').replace(leaf, '').split('')).concat("").map(function(subtree) {
branches.push([leaf].concat(subtree));
});
}
return branches;
};
console.log(tree("abc".split('')).map(function(str) {
return str.join('')
}))

关于javascript - 获取字符串的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com