js字符串的字典序_JavaScript算法系列之-----------------字符串排列(JS实现)

本文介绍如何使用JavaScript实现字符串的字典序排列。通过递归和字符串拼接方法,详细解析算法流程,帮助理解字符串排列的实现过程。同时讨论了面对有重复字符时的解决方案,即利用Set进行去重。
摘要由CSDN通过智能技术生成

1.输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba

字符串拼接

(先理解不输入重复字符的)

1 functionpermutate(str) {2 var result=[];3 if(str.length==1){4 return[str]5 }else{6 var preResult=permutate(str.slice(1));7 for (var j = 0; j < preResult.length; j++) {8 for (var k = 0; k < preResult[j].length+1; k++) {9 var temp=preResult[j].slice(0,k)+str[0]+preResult[j].slice(k);10 result.push(temp);11 }12 }13 returnresult;14 }15 }16 console.log(permutate("abc"));

上述方式不是用交换实现的 用的是字符串拼接的方法

原理:

固定第一个字符,递归取得第一个字符后面的各种字符串组合;

再把第一个字符与后面每一个字符交换,并同样递归获得收尾后面的字符串组合;

递归的出口为当只有一个字符的时候

理解的不用看一下算法流程了!

=============================================================================================================

假设输入abc

大概走一遍算法执行流程:

第一步 str='abc';

第二步 到6行 preResult='bc' 递归

第三步 到6行  preResult='c' 递归

第四步 到第四行返回 [c]  此时回到第三步的递归 str = 'bc' 执行第7行往下的循环

循环完毕后result=['bc','cb'] 此时返回第二步的递归 str='abc' 执行7行往下的循环

第五步 循环完毕后result=['abc','bac','bca','acb','cab','cba'] 此时输出最终结果

============================================================================================================

字符串交换

1 functionpermutation(str){2 let result =[];3 if(str.length === 1){4 return[str];5 }else{6 let last = permutation(str.slice(1));7 for(let i=0; i

24 let res = permutation('abc');25 console.log(res);

对于有重复的字符串来说按照上述算法输出出来会有重复的组合,偷懒的解法是直接去重就可以了

加一句Array.from(new Set(permutate("abc")));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值