js实现字符全排列算法的简单方法
发布时间:2020-10-07 01:39:28
来源:脚本之家
阅读:82
作者:jingxian
实例如下:
字符全排列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 = "
- " + result.join("
- ") + "
document.write(html);
以上这篇js实现字符全排列算法的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。