LeetCode 730, Hard. Topics: String, Dynamic Programming. View on LeetCode.
Generate this problem as a practice environment: tested reference solution, 35 parametrized pytest cases, and a playground notebook:
Problem
Given a string s, return the number of different non-empty palindromic subsequences in s. Since the answer may be very large, return it modulo 10^9 + 7.
A subsequence of a string is obtained by deleting zero or more characters from the string.
A sequence is palindromic if it is equal to the sequence reversed.
Two sequences a1, a2, ... and b1, b2, ... are different if there is some i for which ai != bi.
Examples
Constraints
1 <= s.length <= 1000
s[i] is either 'a', 'b', 'c', or 'd'.
Solution
Reference implementation from solution.py on GitHub, full suite in test_solution.py:
Complexity
Last modified on September 7, 2026