【发布时间】:2018-02-19 14:37:55
【问题描述】:
我正在尝试创建一个函数,该函数将返回一个具有给定字符串的幂集的数组,w/c 是所有可能子集的集合,包括空集。
应该对子集中的所有字符进行排序,并且相同字符的集合被认为是重复的,无论顺序如何,并且只计算一次,例如'ab' 和 'ba' 是一样的。
例如:
allSet("jump")
* -> ["", "j", "ju", "jm", "jp", "jmu", "jmp", "jpu", "jmpu", "u", "m", "p", "mu", "mp", "pu", "mpu"]
*/
我一直在试图找出背后的逻辑并尝试使用递归,但我就是做不到:
var allSet = function(str) {
let result = [];
let strCopy = str.split('');
strCopy = strCopy.slice();
for (var i = 0; i < str.length; i++) {
result.push(str[i]);
}
result = result.concat(allSet(strCopy));
return result;
};
allSet("jump");
任何人都可以帮助我并帮助我理解外行术语的解决方案逻辑吗? (示例/类比会有所帮助)抱歉,这里是个傻瓜。
【问题讨论】:
-
也许你应该试试CodeGolf,他们喜欢这种东西。
-
如何处理双字母?前任。 “评论”、“推荐”等
-
那么...这段代码是否有效,您想了解它吗?在这种情况下,请尝试在调试器中单步执行代码。
标签: javascript recursion