题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

step 1:遍历字符串每个字符。 step 2:以每次遍历到的字符为中心(分奇数长度和偶数长度两种情况),不断向两边扩展。 step 3:如果两边都是相同的就是回文,不断扩大到最大长度即是以这个字符(或偶数两个)为中心的最长回文子串。 step 4:我们比较完每个字符为中心的最长回文子串,取最大值即可。

import java.util.*;

public class Solution {
    
    public int getLongestPalindrome (String a) {
        char[] arr = a.toCharArray();
        int n = arr.length;
        if(n<1){
            return 0;
        }
        int max = 1;
        for(int i=1;i<n;i++){
            int j = 1;
            while(i>=j && i+j-1< n && arr[i-j]==arr[i+j-1]){
                j++;
            }
            int k = 1;
            while(i>=k && i+k< n && arr[i-k]==arr[i+k]){
                k++;
            }
            max = Math.max(max,Math.max(2*(j-1), 2*(k-1) + 1));
        }
        return max;
    }
}
全部评论

相关推荐

04-28 22:33
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务