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读取ASP设定的COOKIE
Nov 24 Javascript
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
JavaScript arguments 多参传值函数
Oct 24 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
jquery常用操作小结
Jul 21 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
js限制输入框只能输入数字(onkeyup触发)
Sep 28 Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
Aug 27 Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 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
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
JavaScript学习历程和心得小结
2010/08/16 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
javascript中call()、apply()的区别
2019/03/21 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python实现字符串加密成纯数字
2019/03/19 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python matplotlib实时画图案例
2020/04/23 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
一份Java笔试题
2012/02/21 面试题
什么是事务?为什么需要事务?
2012/01/09 面试题
战友聚会邀请函
2014/01/18 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
社区灵活就业证明
2014/11/03 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
业余无线电通联Q语
2022/02/18 无线电