最长回文子串
回文字符串的长度若是奇数,那么回文的中间一个单字符,两边对称。回文字符串的长度若是偶数,那么中间是两个字符一样,然后两边对称。
我们用的方法如下:
package com.leetcode.study; public class Main { private int lo,maxLen; public static void main(String[] args) { } public String longestPalindrome(String s){ int len = s.length(); if(len<2)return s; for(int i=0;i<len-1;i++){ extendPalindrome(s, i, i); extendPalindrome(s, i, i+1); } return s.substring(lo, lo+maxLen); } public void extendPalindrome(String s, int j, int k){ while(j>=0&&k<s.length()&&s.charAt(j)==s.charAt(k)){ j--; k++; } if(maxLen<k-j-1){ lo=j+1; maxLen=k-j-1; } } }
主要思路是找到一位然后向两边扩展,找到最大的长度。