Easy Diffeculty
Is Subsequence

Two Pointers

String

Dynamic Programming

easy

## Is Subsequence

The problem Is Subsequence is defined as follows: given two strings `s` and `t`, return true if s is a subsequence of t, or false otherwise. A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without changing the relative order of the remaining characters.

Here's a possible solution to this problem in JavaScript:

``````function isSubsequence(s, t) {
let i = 0;
let j = 0;
while (i < s.length && j < t.length) {
if (s[i] === t[j]) {
i++;
}
j++;
}
return i === s.length;
}``````

The above function uses two pointers i and j to iterate over the characters of s and t respectively. The while loop continues until either i reaches the end of s or j reaches the end of t. At each iteration, if the current characters of s and t match, i is incremented to move to the next character of s. Otherwise, j is incremented to move to the next character of t.

Finally, the function checks if i has reached the end of s. If yes, it means that all the characters of s have been found in t in the same order, so the function returns true. Otherwise, it means that at least one character of s is missing in t, so the function returns false.

The time complexity of this solution is O(n), where n is the length of t. The reason is that the function iterates over all the characters of t at most once, and each iteration takes constant time. The space complexity is O(1), because the function uses only a constant amount of additional memory regardless of the size of the input.