Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:
Input: "cbbd"
Output: "bb"
题目:找出字符串中最长的回文子串
思路:回文串就是从中间到左右两边是对称的,最简单和高效的方法便是遍历字符串每个字符,然后向左右两边扩散。
代码:
public class Solution {
private int begin, maxLen;
public String longestPalindrome(String s) {
int len = s.length();
if (len < 2)
return s;
for (int i = 0; i < len-maxLen/2; i++) {
extendPalindrome(s, i, i); //中间单个字符对称
extendPalindrome(s, i, i+1); //中间双字符对称
}
return s.substring(begin, begin + maxLen);
}
private void extendPalindrome(String s, int j, int k) {
while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) {
j--;
k++;
}
k=k-1;
j=j+1;
if (maxLen < k - j + 1) {
begin = j;
maxLen = k - j + 1;
}
}}