Skip to content

Commit

Permalink
Merge pull request neetcode-gh#2025 from andrewmustea/c_0392-is-subse…
Browse files Browse the repository at this point in the history
…quence_use_pointers

c: 0392-is-subsequence: use pointers instead of recursion
  • Loading branch information
tahsintunan authored Jan 15, 2023
2 parents 8aa44b7 + 255b19e commit f441c0d
Showing 1 changed file with 39 additions and 13 deletions.
52 changes: 39 additions & 13 deletions c/0392-is-subsequence.c
Original file line number Diff line number Diff line change
@@ -1,18 +1,44 @@
/*
Given two strings s and t, return true if s is a subsequence of t, or false otherwise.
/**
* 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:
Space: O(1)
Time: O(n)
*/
* Input: s = "abc", t = "ahbgdc"
* Output: true
*
* Example 2:
*
* Input: s = "axc", t = "ahbgdc"
* Output: false
*
* Constraints:
*
* 0 <= s.length <= 100
* 0 <= t.length <= 104
* s and t consist only of lowercase English letters.
*
* Space: O(1)
* Time: O(n)
*/

bool isSubsequence(char * s, char * t){
if (s[0]=='\0'){
return true;
} else if (t[0]=='\0') {
return false;
} else if (t[0]==s[0]) {
return isSubsequence(s+1, t+1);
} else {
return isSubsequence(s, t+1);
char *s_char = s;
char *t_char = t;

while (*s_char != 0) {
if (*t_char == 0) {
return false;
}
else if (*s_char == *t_char) {
++s_char;
}

++t_char;
}

return true;
}

0 comments on commit f441c0d

Please sign in to comment.