js實(shí)現(xiàn)字符全排列算法的簡(jiǎn)單方法
實(shí)例如下:
<!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,""); //去除重復(fù)字符以及空白字符
switch(o.length){
case 0:
case 1: return [o];
default:
var p = /^(\S+?)(\S)$/.exec(o), //使用正則將字符串分割為n-1長(zhǎng)度字符串,以及最后一個(gè)字符串。
_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" ) );
//字符插入位置從開(kāi)頭前到結(jié)尾后,正則的作用相當(dāng)于Array.splice(j,0,l); 在下標(biāo)j的位置插入一個(gè)字符l
}
}
return r;
}
}
var arr = "abcde";
var t = new Date().getTime();
var result = charsMap(arr);
document.write( "總耗時(shí):"+(new Date().getTime()-t)+"ms" );
var html = "<ul><li>" + result.join("</li><li>") + "</li></ul>";
document.write(html);
</script>
</body>
</html>
以上這篇js實(shí)現(xiàn)字符全排列算法的簡(jiǎn)單方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用canvas實(shí)現(xiàn)鯉魚(yú)躍龍門(mén)的動(dòng)畫(huà)效果
這篇文章主要給大家介紹了使用canvas實(shí)現(xiàn)鯉魚(yú)躍龍門(mén)的動(dòng)畫(huà)效果,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以自己動(dòng)手嘗試一下2024-02-02
layui-table獲得當(dāng)前行的上/下一行數(shù)據(jù)的例子
今天小編就為大家分享一篇layui-table獲得當(dāng)前行的上/下一行數(shù)據(jù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
禁用頁(yè)面部分JavaScript方法的具體實(shí)現(xiàn)
方法重寫(xiě),重寫(xiě)要禁用的方法,并讓它什么也不做,結(jié)果證明真的可行,但并不知道是不是一個(gè)科學(xué)的方法,我拿出來(lái)與大家共同討論一下2013-07-07
javascript設(shè)計(jì)模式 – 觀察者模式原理與用法實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 觀察者模式,結(jié)合實(shí)例形式分析了javascript觀察者模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
解決使用layui的時(shí)候form表單中的select等不能渲染的問(wèn)題
今天小編就為大家分享一篇解決使用layui的時(shí)候form表單中的select等不能渲染的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
實(shí)例分析Array.from(arr)與[...arr]到底有何不同
這篇文章通過(guò)實(shí)例主要給大家分析介紹了關(guān)于Array.from(arr)與[...arr]到底有何不同的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
JavaScript常見(jiàn)JSON操作實(shí)例分析
這篇文章主要介紹了JavaScript常見(jiàn)JSON操作,簡(jiǎn)單描述了json的概念、常見(jiàn)json類(lèi)型,并結(jié)合實(shí)例形式分析了json的序列化、轉(zhuǎn)換、格式化、解析等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
JavaScript程序員應(yīng)該知道的45個(gè)實(shí)用技巧
在這篇文章中,我將分享一組JavaScript的技巧、竅門(mén)和最佳實(shí)踐,這些都是JavaScript程序員應(yīng)該知曉的,不管他們是使用在瀏覽器/引擎上,還是服務(wù)器端(SSJS——Service Side JavaScript)JavaScript解釋器上2014-03-03

