博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】字符串的全排列
阅读量:6718 次
发布时间:2019-06-25

本文共 948 字,大约阅读时间需要 3 分钟。

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串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;}复制代码

转载地址:http://unumo.baihongyu.com/

你可能感兴趣的文章
第十六章 为什么说张清“虎头蛇尾”
查看>>
ShiftOperators.cs
查看>>
C#中的预处理命令
查看>>
Assistance Required(打表)
查看>>
使用Ajax的Time实现倒计时功能
查看>>
Solr字段配置错误
查看>>
Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
查看>>
使用windbg查看DependencyObject的属性
查看>>
IE首页被篡改(手动修复)
查看>>
基于FPGA的图像处理(二)--System Generator入门
查看>>
DIV+CSS 入门
查看>>
UVa 213 Message Decoding(World Finals1991,串)
查看>>
Everything search syntax
查看>>
BZOJ 3211 弗洛拉前往国家 树阵+并检查集合
查看>>
Windows下一个SlikSVN使用
查看>>
DataTable.Compute 性能慢的问题
查看>>
分层是一种思想
查看>>
Windows系统bug
查看>>
Chrome应用技巧之代码整理。
查看>>
Linux下配置Hadoop 1.2.1
查看>>