题目:对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。"abc1234321ab",12 返回:7
思路:思路很直接,还是找对称轴,然后往两边扫,注意控制边界,得到最大值,对称轴也还是分两种,“aba”中'b'形和“abba”中'b'中间形。。
public int getLongestPalindrome(String A, int n) { int max=0; for(int i=0;i<n-1;i++){ if(A.charAt(i)==A.charAt(i+1)){ int temp=0; int l=i,r=i+1; while(l>=0&&r<n&&A.charAt(l)==A.charAt(r)){ l--; r++; temp=temp+2; } if(max<temp) max=temp; } if((i-1)>=0&&(i+1)<n&&(A.charAt(i-1)==A.charAt(i+1))){ int temp=1; int l=i-1,r=i+1; while(l>=0&&r<n&&A.charAt(l)==A.charAt(r)){ l--; r++; temp=temp+2; } if(max<temp) max=temp; } } return max; }