如何获得所有可能的单词集 - JS

时间:2018-02-19 14:37:56

标签: javascript recursion

我正在尝试创建一个函数,它将返回一个具有给定字符串幂集的数组,w / c是所有可能子集的集合,包括空集。

子集中的所有字符都应该被排序,并且相同字符的集合被认为是重复的,无论顺序和计数只有一次,例如'ab'和'ba'是相同的。

例如:

{{1}}

我一直在试图弄清楚背后的逻辑并尝试使用递归,但我不能:

{{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"));