1. 程式人生 > >找出字串內最長的迴文

找出字串內最長的迴文

一個字串有很多子串,這些子串有可能是迴文,那麼,怎麼找出其中最長的迴文子串來呢?

例如:

"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;
};