leetCode刷题---最大回文子串

描述: 给定一个字符串s ,找到s 中最长的回文子串, 你可以假设 s的最大长度为1000

示例1:

输入: "babad"

输出: "bab"

注意 : " aba" 也是一个有效答案

示例2:

输入: "cbbd"

输出: "bb"

以某个元素为中心,分别计算偶数长度的回文最大长度和奇数长度的回文最大长度

private int index,len;

public String longestPalidrome(String s) {

    if(s.length() < 2) {

      return s;
   }


   for(int i =0;i<s.length() -1 ;i++) {
        // 奇数长度因为中间算了1个
       PalidromeHelper(s,i,i);
        // 偶数长度
       PalidromeHelper(S,i,i+1);

   }

    return s.subString(index,index + len);

}

public void PalidromeHelper(String s, int l,int r) {
    while( l>=0 && r< s.length() && s.charAt(l) == s.charAt(r)) {
        l --;
        r++;
    }

    if(len < r-l -1) {
        
        index = l+1;
        len = r- l -1;

    }
    
}
经验分享 程序员 微信小程序 职场和发展