【刷算法】字符串的全排列
生活随笔
收集整理的這篇文章主要介紹了
【刷算法】字符串的全排列
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。
分析
沒啥好分析的了,這個題不會,上網(wǎng)查的思路,大概就是:
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交換
代碼實現(xiàn)
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; } 復制代碼總結
以上是生活随笔為你收集整理的【刷算法】字符串的全排列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代计算机系统中运算器设计一般采用的是,
- 下一篇: Linux(RadHat)基础学习—FT