js实现字符全排列算法
16lz
2021-01-22
<!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字符串替换为动态创建的模式。
- 求助 急 js替换字符串问题
- 如何判断字符串是一个字符串化的JSON对象
- JavaScript相当于Ruby的字符串#扫描
- 11、javascript中字符串常用操作总结、JS字符串操作大全
- 从占用转义字符的字符数组创建字符串