Distinct subsequences
The problem
Given two strings s and t, return the number of distinct subsequences of s that equal t.
A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters. For example, "ace" is a subsequence of "abcde" while "aec" is not.
The task is to count how many different ways we can form t from s by deleting some (or no) characters from s. Return the result modulo 109+7.
Input: s = "axbxax", t = "axa"
Output: 2
Explanation: In the string "axbxax", there are two distinct subsequences "axa":
(a)(x)bx(a)x (a)xb(x)(a)x
Input: s = "babgbag", t = "bag"
Output: 5
Explanation: In the string "babgbag", there are five distinct subsequences "bag":
(ba)(b)(ga)(g) (ba)(bg)(ag) (bab)(ga)(g) (bab)(g)(ag) (babg)(a)(g)
Input: s = "abcde", t = "ace"
- 1 <= s.length, t.length <= 1000
cpp
class Solution{
public: int distinctSubsequences(string s, string t){
}
};java
class Solution {
public int distinctSubsequences(String s, String t) {
}
}python
class Solution:
def distinctSubsequences(self, s, t):javascript
class Solution {
distinctSubsequences(s, t) {
}
}csharp
public class Solution
{
public int DistinctSubsequences(string s, string t)
{
}
}go
func DistinctSubsequences(s string, t string) int {
}Stuck? Show a way to structure it+
- 01Let dp[j] count ways to form the first j characters of t from the processed prefix of s.
- 02Initialize dp[0] to one for the empty target.
- 03For each source character, update matching target positions from right to left.
- 04Use the required numeric type or modulo for potentially large counts.
Reference answer
Then expect these follow-ups
What is the equivalent two-dimensional recurrence?
Tests: DP formulation
Why must the optimized update run right to left?
Tests: state dependency
Hiring now
Swiggy has 152 open roles right now
landed applies to roles like these for you, on each company’s own site, with answers written for the role.
Content Lead
Mumbai, MH, India
Sales Manager I
Kolhapur, MH, India
Assistant Manager- Finance
Bengaluru, KA, India
Next question