题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param A string字符串 * @return int整型 */ public static int maxlen=1; public int getLongestPalindrome1 (String A) { if(A.length()<2){ return 1; } fun(A,0,A.length()-1); return maxlen; // write code here } public void fun(String str,int left,int right){ int l=left; int r=right; if(r-l+1<maxlen) return; label:while(l>=0&&r<=str.length()-1&&l<r){ if(str.charAt(l)!=str.charAt(r)){ break label; }else{ l++; r--; } } if(l<r){ fun(str,left+1,right); fun(str,left,right-1); }else{ maxlen=Math.max(maxlen,right-left+1); } } public int getLongestPalindrome (String A){ for(int i=0;i<A.length()-1;i++){ for(int j=i+1;j<=A.length()-1;j++){ if(j-i+1>maxlen&&fun1(A,i,j)){ maxlen=j-i+1; } } } return maxlen; } public boolean fun1(String str,int left,int right){ while(left<=right){ if(str.charAt(left)!=str.charAt(right)){ return false; } left++; right--; } return true; } }