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 相关文章推荐
Jquery判断IE6等浏览器的代码
Apr 05 Javascript
JavaScript 继承使用分析
May 12 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
Sep 09 Javascript
基于jquery的多功能软键盘插件
Jul 25 Javascript
IFrame跨域高度自适应实现代码
Aug 16 Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
详解微信小程序的 request 封装示例
Aug 21 Javascript
如何使用 vue + d3 画一棵树
Dec 03 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 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
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
详解php反序列化
2020/06/10 PHP
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
python中文编码与json中文输出问题详解
2018/08/24 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python实现无边框进度条的实例代码
2020/12/30 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
广告语设计及教案
2014/03/21 职场文书
财产公证书样本
2014/04/04 职场文书
电影雨中的树观后感
2015/06/15 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js