Given a list/array/string in Python, find out if it is the subsequence of another. A subsequence X of Y is the sequence that removes non or more elements of Y so that X == Y. For example, “abc” is a subsequence of “atbtc”.
To implement this subsequence check, it usually involves two pointers pointing to X and Y and move them towards the end. But in Python, we can do this quick and efficient using the iterator, and the all, any function:
def isSubsequence(x, y):
it = iter(y)
return all(any(c == ch for c in it) for ch in x)
For example:
>>> isSubsequence("abc", "def")
False
>>> isSubsequence("abc", "adebcf")
True
First, we need to get the iterator of y, then the iterator will keep moving to the right (won’t reset) if possible – via any function. Then finally, we have to make sure for all characters in x, we can find a match in y.
Of course, we can use two pointer to implement this in a classic way Teaching Kids Programming – Is Subsequence Algorithm via Two Pointer:
class Solution:
def isSubsequence(self, s: str, t: str) -> bool:
ls, lt = len(s), len(t)
if ls > lt:
return False
i = j = 0
while i < ls and j < lt:
if s[i] == t[j]:
i += 1
j += 1
else:
j += 1
return i == ls
String Subsequence Algorithms:
- Teaching Kids Programming – Is Subsequence Algorithm via Recursion (Greedy)
- Teaching Kids Programming – Is Subsequence Algorithm via Two Pointer
- The Subsequence Algorithm for Two Strings – How to Check if a String is Subsequence of Another?
- GoLang Function of Checking Is Subsequence
- Algorithms to Check if a String is a Subsequence String of Another String
- in Python, you can do this in Pythonic way: Python Function to Check Subsequence
–EOF (The Ultimate Computing & Technology Blog) —
491 wordsLast Post: The C++ template for Printing the Vector/List/Set/Map by Overriding the cout Operator?
Next Post: Teaching Kids Programming - Compute the Max Product of 3 Numbers in the Array
Smart use of python.