【面试经典150题】【双指针】392. 判断子序列

题目链接

https://leetcode.cn/problems/is-subsequence/?envType=study-plan-v2&envId=top-interview-150

题解思路

  1. 首先如果s的长度大于t的长度,那么s肯定不是t的子序列
  2. 如果s的长度等于t的长度,那么s==t的情况下s才是t的子序列
  3. 如果s的长度小于t的长度,那么我们需要一个下标i来依次遍历字符串s中的字符,另一个下标j来依次便利t中的字符,对于s[i]我们需要找到一个s[j]和它相等,对于s[i + 1],我们需要找到t[j']s[i + 1]相等,其中j' > j,以此类推。简单来说,我们需要按顺序遍历字符串s,然后在字符串t中找到和s中的字符相等的字符,这样才能证明st的子序列。
    时间复杂度 O ( n + m ) O(n + m) O(n+m)
    空间复杂度 O ( 1 ) O(1) O(1)
    附上代码:
class Solution {
public:
    bool isSubsequence(string s, string t) {
        int n = s.length();
        int m = t.length();
        // s是t的子序列的前提条件是s的长度比t短
        if (n > m) {
            return false;
        }
        // n <= m
        // 时间复杂度O(n + m)
        int j = 0;
        for (int i = 0; i < n; ++i) {
            bool match = false;
            for (;j < m; ++j) {
                if (s[i] == t[j]) {
                    match = true;
                    ++j;
                    break;
                }
            }
            if (!match) {
                return false;
            }
        }
        return true;
    }
};

相关推荐

  1. 面试经典150】【指针392. 判断序列

    2024-06-17 13:20:02       33 阅读
  2. 面试经典150——判断序列

    2024-06-17 13:20:02       29 阅读
  3. 【leetcode面试经典150】26.判断序列(C++)

    2024-06-17 13:20:02       39 阅读
  4. 力扣(leetcode)第392判断序列(Python)

    2024-06-17 13:20:02       62 阅读
  5. 力扣刷-392.判断序列

    2024-06-17 13:20:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 13:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 13:20:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 13:20:02       82 阅读
  4. Python语言-面向对象

    2024-06-17 13:20:02       91 阅读

热门阅读

  1. Python数据分析与机器学习在金融风控中的应用

    2024-06-17 13:20:02       30 阅读
  2. Hashtable 基本用法及其与 HashMap 的区别

    2024-06-17 13:20:02       38 阅读
  3. Apache网页优化

    2024-06-17 13:20:02       34 阅读