/* *给定一个长度为N的串,求最长回文子串。 */ function returnStr(str){ console.log(str); var arr = [],s = ""; for(var i=0;i<str.length;i++){ s = ""; if(str.charAt(i)==str.charAt(i+1)){ var j=0; while(str.charAt(i+j+1)==str.charAt(i-j)){ s = str.charAt(i-j) + s + str.charAt(i+j+1); j++; } arr.push(s); }else if(str.charAt(i-1)==str.charAt(i+1)){ var m=1; s = str.charAt(i); while(str.charAt(i+m)==str.charAt(i-m)){ s = str.charAt(i-m) + s + str.charAt(i+m); m++; } arr.push(s); } } //等到所有回文字符串的数组;然后取值的最长 var l =0 ;k = ""; arr.forEach(function(val,key){ if(val.length>l){ l = val.length; k = val; } }); return "所有回文字符串的集合是:"+arr+",最长的回文字符串的长度是:"+l+",内容是:"+k; } console.log(returnStr("adbdabccbalkj123321jkasdfaswtweypoiuiopsdf"));
引自http://www.nowcoder.com/questionTerminal/d91641c6489a4aeab390e729c3c883d0