题解 | #最长回文子串#

最长回文子串

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

import java.util.*;

public class Solution {
    public int getLongestPalindrome(String A, int n) {
        // write code here
        if("".equals(A)){
            return 0;
        }
        int res = 0;
        for(int i = 0;i<A.length();i++){
            char next = A.charAt(i);
            //每拿出一个字符 都从尾部去找到相同的字符 然后判断这段是不是回文子串
            for(int j = A.length() - 1;j>i;j--){
                char next2 = A.charAt(j);
                if(next == next2){
                    boolean b = juage(i,j,A);
                    if(b){
                        int count = j - i + 1;
                        res = Math.max(res,count);
                    }
                }
            }
        }
        return res;
    }
    //判断i 到 j这一段是不是回文字符 是返回j - i + 1,
    public boolean juage(int i,int j,String A){
        int cha = j - i;
        int middle = i + cha / 2;
        if(cha % 2 == 1){
            for(int k = i ;k<=middle;k++){
                int next = A.charAt(k);
                int next2 = A.charAt(k + 2 * (middle - k) + 1);
                if(next != next2){
                    return false;
                }
            }
            return true;
        } else {
            for(int k = i ;k<middle;k++){
                int next = A.charAt(k);
                int next2 = A.charAt(k + 2 * (middle - k));
                if(next != next2){
                    return false;
                }
            }
        }
        return true;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 14:08
点赞 评论 收藏
分享
牛客92804383...:在他心里你已经是他的员工了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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