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 相关文章推荐
在IE浏览器中resize事件执行多次的解决方法
Jul 12 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
node.js中的console.log方法使用说明
Dec 09 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
利用Console来Debug的10个高级技巧汇总
Mar 26 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
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
JAVA/JSP学习系列之七
2006/10/09 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
Jquery练习之表单验证实现代码
2010/12/14 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
基于Python实现文件大小输出
2016/01/11 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
params有什么用
2016/03/01 面试题
药学专业毕业生求职信
2013/10/20 职场文书
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
大学生毕业鉴定
2014/01/31 职场文书
迟到检讨书5000字
2014/01/31 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
高三复习计划
2015/01/19 职场文书
九寨沟导游词
2015/02/02 职场文书
专家推荐信范文
2015/03/26 职场文书
Golang入门之计时器
2022/05/04 Golang
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript