我正在尝试编写一个执行以下操作的函数:
下面的函数(我在网上找到了它)通过将字符串作为参数并返回该字符串的所有排列来实现
我无法弄清楚如何对其进行修改以使其与整数数组一起工作,(我认为这与某些方法在字符串上的处理方式与在整数上的处理方式不同有关,但是我不确定。 ..)
var permArr = [], usedChars = []; function permute(input) { var i, ch, chars = input.split(""); for (i = 0; i < chars.length; i++) { ch = chars.splice(i, 1); usedChars.push(ch); if (chars.length == 0) permArr[permArr.length] = usedChars.join(""); permute(chars.join("")); chars.splice(i, 0, ch); usedChars.pop(); } return permArr };
注意:我正在寻找使函数返回 整数 数组, 而不是 字符串 数组的 方法 。
我真的需要使用JavaScript的解决方案。我已经想出了如何在python中做到这一点
如果您注意到,代码实际上会在进行任何置换之前将字符拆分成数组,因此您只需删除联接和拆分操作
var permArr = [], usedChars = []; function permute(input) { var i, ch; for (i = 0; i < input.length; i++) { ch = input.splice(i, 1)[0]; usedChars.push(ch); if (input.length == 0) { permArr.push(usedChars.slice()); } permute(input); input.splice(i, 0, ch); usedChars.pop(); } return permArr }; document.write(JSON.stringify(permute([5, 3, 7, 1])));