题目
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
思路
写一个子程序,从某一单个char(或者两个相等char)开始不断向两边扩展,直到碰到扩展后的String不对称为止;
遍历一遍String中的不同起始位置,即可得到结果。
代码
public class Solution {
int maxlength = 1;
int maxstart = 0;
public void extendPalind(String s, int j , int k ){
while(j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)){
--j;
++k;
}
if(maxlength < (k - j - 1)){
maxstart = j + 1;
maxlength = k - j - 1;
}
}
public String longestPalindrome(String s) {
int length = s.length();
if(length < 2){
return s;
}
for(int i = 0 ; i < length - 1 ; ++ i){
extendPalind(s , i , i );
extendPalind(s , i , i + 1);
}
return s.substring(maxstart , maxstart + maxlength);
}
}