Given a string s, return the longest palindromic substring in s.
Example 1:
Input: s = "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:
Input: s = "cbbd"
Output: "bb"
Example 3:
Input: s = "a"
Output: "a"
Example 4:
Input: s = "ac"
Output: "a"
Constraints:
1 <= s.length <= 1000
s consist of only digits and English letters (lower-case and/or upper-case),
Solution:
class Solution {
int resultStart;
int resultLength;
public String longestPalindrome(String s) {
int strLength = s.length();
if (strLength < 2) {
return s;
}
for (int start = 0; start < strLength - 1; start++) {
expandRange(s, start, start);
expandRange(s, start, start + 1);
}
return s.substring(resultStart, resultStart + resultLength);
}
private void expandRange(String str, int begin, int end) {
while (begin >= 0 && end < str.length() &&
str.charAt(begin) == str.charAt(end)) {
begin--;
end++;
}
if (resultLength < end - begin - 1) {
resultStart = begin + 1;
resultLength = end - begin - 1;
}
}
}
Comments