From 106aac6492f4c693d700fe915bbb3027c5654cf3 Mon Sep 17 00:00:00 2001 From: Sangeeth Sudheer Date: Sat, 19 Feb 2022 14:21:28 +0530 Subject: [PATCH] feat(392-is-subsequence): added py3 soln and readme --- 0392_is-subsequence/README.md | 25 +++++++++++++++++++ 0392_is-subsequence/python3/main.py | 37 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 0392_is-subsequence/README.md create mode 100644 0392_is-subsequence/python3/main.py diff --git a/0392_is-subsequence/README.md b/0392_is-subsequence/README.md new file mode 100644 index 0000000..4881fff --- /dev/null +++ b/0392_is-subsequence/README.md @@ -0,0 +1,25 @@ +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: + +``` +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. + +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? diff --git a/0392_is-subsequence/python3/main.py b/0392_is-subsequence/python3/main.py new file mode 100644 index 0000000..ca88476 --- /dev/null +++ b/0392_is-subsequence/python3/main.py @@ -0,0 +1,37 @@ +class Solution: + def isSubsequence(self, s: str, t: str) -> bool: + slen = len(s) + tlen = len(t) + si = 0 + ti = 0 + + # If s is longer than t, it's obviously not + # going to be a subsequence + if slen > tlen: + return False + + while ti < tlen and si < slen: + found = False + + while ti < tlen: + if s[si] == t[ti]: + found = True + ti += 1 + break + + ti += 1 + + if not found: + return False + + si += 1 + + # We reached end of t but we still have + # characters remaining in s and hence + # it's not a subsequence + if si < slen: + return False + + return True + + \ No newline at end of file