我正在尝试创建一个函数,它将返回一个具有给定字符串幂集的数组,w / c是所有可能子集的集合,包括空集。
子集中的所有字符都应该被排序,并且相同字符的集合被认为是重复的,无论顺序和计数只有一次,例如'ab'和'ba'是相同的。
例如:
{{1}}
我一直在试图弄清楚背后的逻辑并尝试使用递归,但我不能:
{{1}}
任何人都可以帮助我,帮助我理解外行人的术语中的解决方案逻辑吗? (例子/类比会有所帮助)对不起这里的假人。
答案 0 :(得分:1)
您可以使用递归来使用此方法:
var allSet = function(str) {
let result = [];
let strCopy = str.split('');
strCopy = strCopy.slice();
// Base condition
if(str.length==0){
return [""];
}
// Call function again with str removing the first char
var _rec = allSet(str.slice(1));
// Add first char on all the elements of _rec
var _rec2 = _rec.map(el => str.charAt(0) + el);
// Join both the arrays
return _rec.concat(_rec2);
};
console.log(allSet("jump"));