2825. Make String a Subsequence Using Cyclic Increments
Simple two-pointer.
Complexity
- Time complexity: $O(N + M)$
- Space complexity: $O(1)$
Code
class Solution:
def canMakeSubsequence(self, str1: str, str2: str) -> bool:
m, n = len(str1), len(str2)
if m < n:
return False
letters = list("abcdefghijklmnopqrstuvwxyza")
inc = {letters[i]: letters[i + 1] for i in range(len(letters) - 1)}
i = j = 0
while i < m and j < n:
if str1[i] == str2[j] or inc[str1[i]] == str2[j]:
i += 1
j += 1
else:
i += 1
return j == n