js实现字符全排列算法的简单方法


Posted in Javascript onMay 01, 2017

实例如下:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>字符全排列</title>
</head>
<body>
   
 
<script>
function charsMap(o){
  o = (o+"").replace(/(\w)(?=\w*\1)/g,"").replace(/\s+/g,""); //去除重复字符以及空白字符
  switch(o.length){
    case 0: 
    case 1: return [o];
    default: 
      var p = /^(\S+?)(\S)$/.exec(o), //使用正则将字符串分割为n-1长度字符串,以及最后一个字符串。
        _r = charsMap(p[1]), 
        l = p[2], 
        r = [];
       
      for (var i = 0; i < _r.length; i++) {
        var t = _r[i];
        for (var j = 0, len = t.length; j <= len; j++) {
          r.push( t.replace( new RegExp("^(\\S{"+j+"})(\\S{"+(len-j)+"})$"), "$1"+l+"$2" ) ); 
          //字符插入位置从开头前到结尾后,正则的作用相当于Array.splice(j,0,l); 在下标j的位置插入一个字符l
        }
      }
      return r;
  }
}
 
var arr = "abcde";
var t = new Date().getTime();
var result = charsMap(arr);
document.write( "总耗时:"+(new Date().getTime()-t)+"ms" );
 
  var html = "<ul><li>" + result.join("</li><li>") + "</li></ul>";
  document.write(html);
</script>
</body>
</html>

以上这篇js实现字符全排列算法的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
js图片处理示例代码
May 12 Javascript
浅析javascript中函数声明和函数表达式的区别
Feb 15 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
深入理解js generator数据类型
Aug 16 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
微信小程序 video组件详解
Oct 25 Javascript
AngularJS实现表格的增删改查(仅限前端)
Jul 04 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
js实现旋转的星空效果
Nov 01 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 #Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 #jQuery
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 #Javascript
node.js 抓取代理ip实例代码
Apr 30 #Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 #Javascript
socket.io学习教程之基本应用(二)
Apr 29 #Javascript
socket.io学习教程之基础介绍(一)
Apr 29 #Javascript
You might like
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
建立文件交换功能的脚本(三)
2006/10/09 PHP
PHP新手上路(十二)
2006/10/09 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php查询操作实现投票功能
2016/05/09 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
使用Python处理BAM的方法
2018/09/28 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
招商专员岗位职责
2014/02/08 职场文书
合同协议书格式
2014/04/18 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
土建技术员岗位职责
2015/04/11 职场文书
质量整改通知单
2015/04/21 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书