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