题解 | #最长回文子串#
最长回文子串
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;
}
}