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"
思路:遍历字符串s,从0到length() - 1,每次以遍历的index为中心分别做奇数和偶数拓展,可以使用辅助函数做拓展直到不符合条件为止,同时maintain一个max值,来记录最长的left index和长度,最后遍历完输出即可。
代码:
int left = 0, max = 0;
public String longestPalindrome(String s) {
if (s.length() <= 1) return s;
for (int i = 0; i < s.length() - 1; i++) {
isValid(i, i, s);
isValid(i, i + 1, s);
}
return s.substring(left, left + max);
}
public void isValid(int begin, int end, String s) {
while (begin >= 0 && end < s.length() && s.charAt(begin) == s.charAt(end)) {
begin--;
end++;
}
if (end - begin - 1 > max) {
max = end - begin - 1;
left = begin + 1;
}
}