這篇文章要跟大家介紹的內容是關於js中字串的全排列的演算法解析,有著一定的參考價值,有需要的朋友可以參考一下。
輸入字串,依字典序印出該字串中字元的所有排列。例如輸入字串abc,則印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
沒啥好分析的了,這個題不會,上網查的思路,大概就是:
abc分化為abc、bac、cba(這是0和0交換、0和1交換、0和2交換
第一步得出的abc分化為abc、acb(這是1和1交換、1和2交換
第一步得出的bac分化為bac、bca(這是1和1交換、1和2交換
第一步得出的cba分化為cba、cab(這是1和1交換、 1和2交換
function Permutation(str) { if(str === null || str === "") return []; var res = []; var index = 0; step(str.split(""), index, res); return res.sort(); } function step(strArr, cur, res) { if(cur === strArr.length-1){ var i = 0, str = ""; while(i < strArr.length){ str += strArr[i++]; } res.push(str); } for(var i = cur;i < strArr.length;i++) { if(strArr[i] === strArr[cur] && i !== cur) continue; swap(strArr, i, cur); step(strArr, cur+1, res); swap(strArr, i, cur); } } function swap(arr, a, b) { var temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
相關推薦:
JavaScript中Object.defineProperty()方法的解析
#以上是js中字串的全排列的演算法解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!