找出字串內最長的迴文
阿新 • • 發佈:2019-01-29
一個字串有很多子串,這些子串有可能是迴文,那麼,怎麼找出其中最長的迴文子串來呢?
例如:
"I like racecars that go fast" -> (racecar)為7
"a" -> 1
"aab" -> 2 "aa"
"abcde" -> 1
"zzbaabcd" -> 4 "baab"
"" -> 0
對於這個問題,我們首先需要一個判斷是否為迴文的方法,這個比較容易實現:
然後,我們遍歷這個字串所有的子串,一一匹配,判斷是否為迴文。isPalindrome = function(s){ //若字串倒轉過來和原先相等,則為迴文 return s.split("").reverse().join("") === s; };
如果是迴文,而且長度比當前最長值更長,就記錄為最長值。
longestPalindrome = function(s){ var longest = 0; for(var i=0;i<s.length;i++){ var temp = ""; for(var j=i;j<s.length;j++){ temp += s.charAt(j); if(isPalindrome(temp) && temp.length > longest){ longest = temp.length; } } } return longest; };