跳至主要內容

0392. 判断子序列

ITCharge小于 1 分钟

0392. 判断子序列open in new window

  • 标签:双指针、字符串、动态规划
  • 难度:简单

题目大意

给定字符串 st ,判断 s 是否为 t 的子序列。

解题思路

双指针。

使用两个指针 ij 分别指向字符串 st,然后对两个字符串进行遍历。

  • 遇到 s[i] == t[j] 的情况,则 i 向右移。
  • 不断右移 j
  • 如果超过 st 的长度则跳出。
  • 最后判断指针 i 是否指向了 s 的末尾,即:判断 i 是否等于 s 的长度。如果等于,则说明 st 的子序列,如果不等于,则不是。

代码

class Solution:
    def isSubsequence(self, s: str, t: str) -> bool:
        size_s = len(s)
        size_t = len(t)
        i, j = 0, 0
        while i < size_s and j < size_t:
            if s[i] == t[j]:
                i += 1
            j += 1
        return i == size_s