全排列算法 --javascript 实现
(function(){ var ret = new Array(); var A = function a(str){ if(str == undefined || str == null){return new Array();} if(str.length < 2) {return new Array(str);} if(str.length == 2) {return new Array(str[0]+str[1],str[1]+str[0]);} for(var k = 0;k < str.length; k++){ var current = str[k]; if(k == 0){ sub = str.substr(1,str.length-1); } else if(k == str.length-1){ sub = str.substr(0,str.length-1); } else{ var sub1 = str.substr(0,k); var sub2 = str.substr(k+1,str.length-1); sub = sub1+sub2; } console.log("sub : " + sub + ", current : " + current); var arr = a(sub); var r = new Array(); for(var i =0 ;i < arr.length; i++){ var ar = arr[i]; for(var j = 0 ;j < arr.length + 1; j++){ var tmp = insert(ar,current,j); if(ret.indexOf(tmp) == -1 ){ret.push(tmp);r.push(tmp);} } } return r; } }; var insert = function (oristr,s,p){ if(p == 0){ return s+oristr; } if(p >= oristr.length){ return oristr + s; } else{ var sub1 = oristr.substr(0,p); var sub2 = oristr.substr(p,oristr.length-1); return sub1+s+sub2; } }; var r = A("abcde"); console.log(r); })();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。