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 相关文章推荐
jQuery bind事件使用详解
May 05 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
ztree获取当前选中节点子节点id集合的方法
Feb 12 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
JavaScript严格模式详解
Jan 16 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
Oct 07 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 include_path设置技巧分享
2011/07/03 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
不安全的常用的js写法
2009/09/15 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
Python聊天室实例程序分享
2016/01/05 Python
python黑魔法之编码转换
2016/01/25 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Django更新models数据库结构步骤
2020/04/01 Python
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
办公室人员先进事迹
2014/01/27 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
电力培训心得体会
2014/09/02 职场文书
委托书的写法
2014/09/16 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏