392. Is Subsequence
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 disturbing the relative positions of the remaining characters. (i.e., “ace” is a subsequence of “abcde” while “aec” is not).
Example 1:
Example 2:
Constraints:
- 0 <= s.length <= 100
- 0 < = t . l e n g t h < = 1 0 4 0 <= t.length <= 10^4 0<=t.length<=104
- s and t consist only of lowercase English letters.
Follow up: Suppose there are lots of incoming s, say s1, s2, …, sk where k >= 109, and you want to check one by one to see if t has its subsequence. In this scenario, how would you change your code?
From: LeetCode
Link: 392. Is Subsequence
Solution:
Ideas:
The function isSubsequence takes two strings s and t and returns a boolean value indicating whether s is a subsequence of t. We use two pointers, i and j, to traverse both strings. If a character in s matches a character in t, we increment both pointers. Otherwise, we increment only the pointer j. If at the end of the traversal, i is equal to the length of s, it means s is a subsequence of t.
Code:
bool isSubsequence(char * s, char * t) {
int i = 0, j = 0;
int s_len = strlen(s);
int t_len = strlen(t);
while (i < s_len && j < t_len) {
if (s[i] == t[j]) {
i++;
}
j++;
}
return i == s_len;
}