Given two strings, find if first string is a subsequence of second - GeeksforGeeks
Given two strings str1 and str2, find if str1 is a subsequence of str2. A subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements (source: wiki).
O(M+N)
we traverse both strings from one side to other side (say from rightmost character to leftmost). If we find a matching character, we move ahead in both strings. Otherwise we move ahead only in str2.
 
 
Recursive Version:
T(n)=T(n-1)+1=O(n)
 
 
Read full article from Given two strings, find if first string is a subsequence of second - GeeksforGeeks
Given two strings str1 and str2, find if str1 is a subsequence of str2. A subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements (source: wiki).
O(M+N)
we traverse both strings from one side to other side (say from rightmost character to leftmost). If we find a matching character, we move ahead in both strings. Otherwise we move ahead only in str2.
bool isSubSequence(char str1[], char str2[], int m, int n){   int j = 0; // For index of str1 (or subsequence   // Traverse str2 and str1, and compare current character    // of str2 with first unmatched char of str1, if matched    // then move ahead in str1   for (int i=0; i<n&&j<m; i++)       if (str1[j] == str2[i])         j++;   // If all characters of str1 were found in str2   return (j==m);}T(n)=T(n-1)+1=O(n)
bool isSubSequence(char str1[], char str2[], int m, int n){    // Base Cases    if (m == 0) return true;    if (n == 0) return false;    // If last characters of two strings are matching    if (str1[m-1] == str2[n-1])        return isSubSequence(str1, str2, m-1, n-1);    // If last characters are not matching    return isSubSequence(str1, str2, m, n-1);}