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效率 一次判断,而不要次次判断
Mar 30 Javascript
jQuery 联动日历实现代码
May 31 Javascript
jQuery对下拉框,单选框,多选框的操作
Feb 21 Javascript
js中string转int把String类型转化成int类型
Aug 13 Javascript
express的中间件bodyParser详解
Dec 04 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 Javascript
详解Node全局变量global模块
Sep 28 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 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
mysql limit查询优化分析
2008/11/12 PHP
php中设置多级目录session的问题
2011/08/08 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
ASP.NET Core中的配置详解
2021/02/05 Python
Python对excel的基本操作方法
2021/02/18 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
人事专员工作职责
2014/02/22 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android