📜  门|门 IT 2005 |第 79 题(1)

📅  最后修改于: 2023-12-03 14:58:35.756000             🧑  作者: Mango

门|门 IT 2005 |第 79 题

该题是一个关于字符串的问题,需要判断一个字符串是否为另一个字符串的子序列。以下为该题的具体描述:

题目描述

给定两个字符串 st,判断 s 是否是 t 的子序列。可假设 st 中均只包含英文小写字母。字符串的一个子序列是若干个字符按原有顺序排列而成的序列,不要求连续。

示例 1:

s = "abc", t = "ahbgdc"
返回 true.

示例 2:

s = "axc", t = "ahbgdc"
返回 false.
解题思路

该题可以使用双指针解法,分别指向字符串 st 的开头,每次比较两个指针所指向的字符是否相等,若相等,则移动指向字符串 s 的指针,否则移动指向字符串 t 的指针。最后判断指向字符串 s 的指针是否到达了最后一个字符,若是则说明 st 的子序列,反之则不是。

代码实现如下:

class Solution:
    def isSubsequence(self, s: str, t: str) -> bool:
        s_idx, t_idx = 0, 0
        while s_idx < len(s) and t_idx < len(t):
            if s[s_idx] == t[t_idx]:
                s_idx += 1
            t_idx += 1
        return s_idx == len(s)
总结

该题是一道简单的字符串问题,使用双指针解法可以比较方便地解决问题。需要注意的是,判断指向字符串 s 的指针是否到达了最后一个字符的代码需要写在 while 循环外面,否则会出现边界问题。