题解 | #全排列#

全排列

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;

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务