题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

回文字符串一共有两种情况,分别是:
1.奇数个回文 aba
2.偶数个回文 aabb
针对每一个位置,将两种情况都判断一下,取得最大值:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String str = in.nextLine();
            char [] res = str.toCharArray();
            int ans = 0;
            for(int i = 0 ; i < res.length ; i++){
                // 1. aba型
                int p1 = i -1 ;
                int p2 = i +1 ;
                int same = 0;
                while(p1 >=0 && p2 < res.length){
                    if(res[p1] == res[p2]){
                        p1--;
                        p2++;
                        same++;
                    }else{
                        break;
                    }
                }
                ans = Math.max(ans,same * 2 + 1);

                // 2. aabb型
                p1 = i;
                p2 = i+1 ;
                same = 0;
                while(p1 >=0 && p2 < res.length){
                    if(res[p1] == res[p2]){
                        p1--;
                        p2++;
                        same++;
                    }else{
                        break;
                    }
                }
                ans = Math.max(ans,same * 2);
            }
            System.out.println(ans);
        }
    }
}
全部评论

相关推荐

求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务