<!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>


更多相关文章

  1. JS正则表达式中有哪些特殊字符,这些特殊字符又分别表示什么含义?
  2. JavaScript 字符串函数 之查找字符方法(一)
  3. 范围变量值的变化没有反映在我的字符串中
  4. Javascript字符串替换为动态创建的模式。
  5. 求助 急 js替换字符串问题
  6. 如何判断字符串是一个字符串化的JSON对象
  7. JavaScript相当于Ruby的字符串#扫描
  8. 11、javascript中字符串常用操作总结、JS字符串操作大全
  9. 从占用转义字符的字符数组创建字符串

随机推荐

  1. Android 异步加载图片分析
  2. Android(安卓)AIDL 双向调用的使用及相关
  3. Android[高级教程] 设计模式之七 单例模
  4. android测试框架
  5. Android开发5——文件读写
  6. 进程、线程与JVM之间的关系
  7. Android中的Activity
  8. Android 设置TextView字体Color Selector
  9. 关键(一): android不同机型的适配的解决方
  10. [置顶] Android开源图表库XCL-Charts版本