最长回文子串(中心扩散法)

给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。

所谓回文串,指左右对称的字符串。

所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串

(注意:记得加上while处理多个测试用例)

输入描述:

输入一个仅包含小写字母的字符串

输出描述:

返回最长回文子串的长度

示例1

输入:

cdabbacc

输出:

4

说明:

abba为最长的回文子串 

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str=sc.nextLine();
            int left=0;
            int right=0;
            int len = 1;
            int maxLen = 0;
            for(int i=0;i<str.length();i++){
                left=i-1;
                right=i+1;
                while (left >= 0 && str.charAt(left) == str.charAt(i)) {
                len++;
                left--;
                }
                while (right < str.length() && str.charAt(right) == str.charAt(i)) {
                len++;
                right++;
                }
                while (left >= 0 && right < str.length() && str.charAt(left) == str.charAt(right)) {
                len+=2;
                right++;
                left--;
                }
                if(len>maxLen)
                    maxLen=len;
                len=1;
            }
            System.out.print(maxLen);
        }
    }
}