# LeetCode: Is Subsequence Solution

*The author is not smart enough to come up with the DP solution in the first place*

## Approach: straight-forward iteration

Iterate through

t

characters, check if each of character in s

is in t

The result is true when the iterator (as index) of

s

equals to its length## Implementation

1var isSubsequence = function (s, t) {2 let indexOfS = 03 for (const char of t) {4 if (char === s[indexOfS]) {5 indexOfS++6 }7 }89 return indexOfS === s.length10}

## Approach: longest common subsequence (LCS)

*This solution is just for reference or fun reading, the author suggests the reader to skip if you do not want to make your day harder...*

Find the length longest common subsequence of

s

and t

Check if that length equals to

s

length## Implementation

1const lcs = function (text1, text2) {2 const memo = Array.from({ length: text1.length + 1 }, _ =>3 Array(text2.length + 1).fill(null)4 )56 const recursion = (m, n) => {7 if (memo[m][n] !== null) return memo[m][n]89 if (m === 0 || n === 0) return (memo[m][n] = 0)1011 if (text1[m - 1] === text2[n - 1])12 return (memo[m][n] = 1 + recursion(m - 1, n - 1))1314 return (memo[m][n] = Math.max(recursion(m, n - 1), recursion(m - 1, n)))15 }1617 return recursion(text1.length, text2.length)18}1920var isSubsequence = function (s, t) {21 return lcs(s, t) === s.length22}

## References

## Comments

Loading comments...

## Tags

leetcode

string

recursion

dynamic programming

## Apply and earn a $2,500 bonus once you're hired on your first job!

Clients from the Fortune 500 to Silicon Valley startups

Choose your own rate, get paid on time

From hourly, part-time, to full-time positions

Flexible remote working environment

A lot of open JavaScript jobs!!

**Fact corner:** Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.

**Still hesitate?** Read HoningJS author's guide on dealing with Toptal interview process.