Hard
LABLongest Palindromic Subsequence II
Return the longest even-length palindromic subsequence where no two adjacent palindrome characters are equal.
EXAMPLES
Example 1
Input
{
"s": "bbabab"
}
Output
4FUNCTION SHAPE
s: string→intSOLUTION NOTE
Track previous matched character. Return 0 when i == j to ensure even length only (exclude single middle char).
Reveal reference solution +
pythonREFERENCE
def longestPalindromeSubseq(self, s: str) -> int:
@cache
def dp(i, j, prev):
if i >= j: return 0
if s[i] == s[j] and s[i] != prev:
return 2 + dp(i + 1, j - 1, s[i])
return max(dp(i + 1, j, prev), dp(i, j - 1, prev))
return dp(0, len(s) - 1, '')Time
O(n² × 26)Space
O(n² × 26)