LeetCode 392. 判断子序列

题目描述

392. 判断子序列

思路分析

解法一:双指针(推荐)

核心思路

  • 用指针 i 指向 s,指针 j 指向 t
  • 若字符相等则 i++,否则只移动 j
  • i 走到末尾即为子序列。


复杂度分析

  • 时间复杂度:O(m + n),其中 m、n 分别为 st 的长度。
  • 空间复杂度:O(1),仅使用常数额外空间。
class Solution {
    public boolean isSubsequence(String s, String t) {
        int i = 0;
        int j = 0;

        // 双指针扫描
        while (i < s.length() && j < t.length()) {
            if (s.charAt(i) == t.charAt(j)) {
                i++;
            }
            j++;
        }

        return i == s.length();
    }
}
func isSubsequence(s string, t string) bool {
	i := 0
	j := 0

	// 双指针扫描
	for i < len(s) && j < len(t) {
		if s[i] == t[j] {
			i++
		}
		j++
	}

	return i == len(s)
}

相似题目

题目 难度 考察点
524. 通过删除字母匹配到字典里最长单词 中等 双指针
583. 两个字符串的删除操作 中等 动态规划
1143. 最长公共子序列 中等 动态规划
115. 不同的子序列 困难 动态规划
392. 判断子序列 简单 双指针
本文作者:
本文链接: https://hgnulb.github.io/blog/2026/70984513
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!