feat(392-is-subsequence): added py3 soln and readme

This commit is contained in:
Sangeeth Sudheer 2022-02-19 14:21:28 +05:30
parent 58eb2306f2
commit 106aac6492
2 changed files with 62 additions and 0 deletions

View File

@ -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?

View File

@ -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