给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
所谓回文串,指左右对称的字符串。
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
(注意:记得加上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);
}
}
}