题解 | #最长回文子串#

最长回文子串

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

分两种情况,一个是双数,一个是单数,内层循环通过两层循环进行判断当前的两个指针的位置对应的字符是否相等来确定是否是回文,第一个循环就是当前中间的字符。


import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            int max = method(s);
            System.out.println(max);
        }
    }
    
    public static int method(String s){
        int max = 0;
        for(int i =0;i<s.length();i++){
            int j = 1;
            while(i+j<s.length()&&i-j>=0 && s.charAt(i+j) == s.charAt(i-j)){
                j++;
            }
            max = Math.max(2*j-1,max);
            int k = 0;
            while(i+k+1<s.length()&&i-k>=0&&s.charAt(i+k+1) == s.charAt(i-k)){
                k++;
            }
            max = Math.max(2*k,max);
           
        }
        return max;
    }
    
}

全部评论

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务