Javascript 字符串全排列組合方法實現


一、目標:

把一個字符串中的字符重新排列生成新的字符串,例如, abc 總共有6種排列 (abc, acb, bac, bca, cab, cba)。

二、思路:

本文章只研究全排列的情況,比如,還是 abc 字符串,3個字符,則總共的排列組合方式應該有 n! 種,此處的 n 為3,則計算出來應該是6種。本文采用遞歸方式實現,基本思路是通過雙循環來實現遞歸的主邏輯部分,外層循環 str,內層循環 n - 1 時的返回數組 preResult 部分,算法邏輯如下方流程圖。
首先,考慮遞歸如何產生,假如當 n = 1,即傳參 str 的長度只有1時,則直接返回只有 str 的數組;當 n > 1時,則考慮 n 和 n - 1 方法返回數組的關系。可以想到,n 時多出的一個字符,來添加到 n - 1 返回數組中每個字符串的頭部。

三、代碼

// perm function
  var perm = function(s) {
    var result = [];
    if (s.length <= 1) {
      return [s];
    } else {
      for (var i = 0; i < s.length; i++) {
        var c = s[i];
        var newStr = s.slice(0, i) + s.slice(i + 1, s.length);
        var l = perm(newStr);
           
        for (var j = 0; j < l.length; j++) {
          var tmp = c + l[j];
          result.push(tmp);
        }
      }
    }
    return result;
  };  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM