首頁 >web前端 >js教程 >js中字串的全排列的演算法解析

js中字串的全排列的演算法解析

不言
不言原創
2018-07-20 10:58:302425瀏覽

這篇文章要跟大家介紹的內容是關於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()方法的解析

#vue-cli的單元測試的範例解析

React的使用:React元件內部的狀態管理

#

以上是js中字串的全排列的演算法解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn