Count Different Palindromic Subsequences LeetCode solution in Python
1class Solution:2def countPalindromicSubsequences(self, s: str) -> int:34N = len(s)5mod = 10**9 + 76memo = {}78def backTrack(start, end):910if start >= N or end < 0:11return 01213key = (start, end)1415if key in memo:16return memo[key]1718strn = s[start : end + 1]1920memo[key] = 02122for char in "abcd":23if not char in strn:24continue25i = start + strn.index(char)26j = start + strn.rindex(char)27memo[key] += backTrack(i + 1, j - 1) + 2 if i != j else 12829memo[key] %= mod3031return memo[key]3233return backTrack(0, N - 1)