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 相关文章推荐
How to Auto Include a Javascript File
Feb 02 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
js setTimeout 参数传递使用介绍
Aug 13 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
Mar 04 Javascript
AngularJS自定义控件实例详解
Dec 13 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
Node.js的特点详解
Feb 03 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
JS实现商品橱窗特效
Jan 09 Javascript
vue 如何使用递归组件
Oct 23 Javascript
JavaScript实现网页跨年倒计时
Dec 02 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
在python的类中动态添加属性与生成对象
2016/09/17 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
python热力图实现简单方法
2021/01/29 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
党的群众路线调研报告
2014/11/03 职场文书
南京导游词
2015/02/03 职场文书
小学运动会报道稿
2015/07/22 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers