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