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

美团公司福利 3017人发布
查看2道真题和解析