Given a string s, return the longest palindromic
substring in s.
Example 1:
Input: s = “babad” Output: “bab” Explanation: “aba” is also a valid answer. Example 2:
Input: s = “cbbd” Output: “bb”
class Solution {
int maxLen = 0; //儲存最長迴文子字串的長度
int lo = 0; //儲存最長迴文子字串的起始索引
public String longestPalindrome(String s) {
char[] input = s.toCharArray();
if(s.length() < 2) {
return s;
}
for(int i = 0; i<input.length; i++) {
expandPalindrome(input, i, i);
expandPalindrome(input, i, i+1);
}
return s.substring(lo, lo+maxLen);
}
public void expandPalindrome(char[] s, int j, int k) {
while(j >= 0 && k < s.length && s[j] == s[k]) {
j--;
k++;
}
if(maxLen < k - j - 1) { //迴文子字串的長度是 k - j - 1
maxLen = k - j - 1;
lo = j+1;
}
}
}
Time: O(n^2) Space: O(n)