题解 | #全排列#
全排列
https://www.nowcoder.com/practice/b3ac35e1569e4601b6d3957dd337e70b
// 补全代码 const s = new Set(); // 阶乘 function factorial(m) { let _total = m; for (let i = 1; i < m; i++) { _total *= i; } return _total; } // 打乱字符顺序 function _sortString(str) { const split = str.split(''); const sort = split.sort((a, b) => { let min = Math.ceil(-1); let max = Math.floor(1); return Math.floor(Math.random() * (max - min + 1) + min); }); const sortedString = sort.join(''); return sortedString; } function _insert(str) { if (s.size === factorial(str.length)) { return; } let sortedString = _sortString(str); if (s.has(sortedString)) { _insert(str); } else { s.add(sortedString); _insert(str); } } _insert(string); const finalResult = [...s]; return finalResult;