leetcode 5. Longest Palindromic Substring
Compared with official solution, below code is easier to implement.
Because I don't think I can come up with
start = i - (len - 1) / 2;
end = i + len / 2;
in a interview.
class Solution {
public String longestPalindrome(String s) {
int len = 0, N = s.length();
String ret = "";
for (int i = 0; i < N; ++i) {
int offset = maxL(s, i, i);
if (2 * offset - 1 > len) {
len = 2 * offset - 1;
ret = s.substring(i - offset + 1, i + offset);
}
offset = maxL(s, i, i + 1);
if (2 * offset > len) {
len = 2 * offset;
ret = s.substring(i - offset + 1, i + 1 + offset);
}
}
return ret;
}
public int maxL(String s, int left, int right) {
int i = 0, N = s.length();
for (;left - i >= 0 && right + i < N && s.charAt(left - i) == s.charAt(right + i); ++i);
return i;
}
}