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 相关文章推荐
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
JS使用对象的defineProperty进行变量监控操作示例
Feb 02 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
Mar 24 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 Javascript
js实现简单图片拖拽效果
Feb 22 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
php中数组首字符过滤功能代码
2012/07/31 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python bytes string相互转换过程解析
2020/03/05 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
空指针到底是什么
2012/08/07 面试题
生产副总岗位职责
2013/11/28 职场文书
高二地理教学反思
2014/01/24 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
原告代理词范文
2015/05/25 职场文书
寒假生活随笔
2015/08/15 职场文书