当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js实现字符全排列算法的简单方法

js实现字符全排列算法的简单方法

2018年05月10日  | 移动技术网IT编程  | 我要评论

实例如下:

<!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实现字符全排列算法的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网