LeetCode392:判断子序列

题目描述

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

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
在这里插入图片描述
解题思想
在这里插入图片描述
在这里插入图片描述
代码

/*
    类似 最长公共子序列
    dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。

    递推公式
    if (s[i - 1] == t[j - 1]),那么dp[i][j] = dp[i - 1][j - 1] + 1;,
    因为找到了一个相同的字符,相同子序列长度自然要在dp[i-1][j-1]的基础上加1(如果不理解,在回看一下dp[i][j]的定义)

    if (s[i - 1] != t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,
    那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];

    和 1143.最长公共子序列 (opens new window)的递推公式基本那就是一样的,区别就是 本题 如果删元素一定是字符串t,
    而 1143.最长公共子序列 是两个字符串都可以删元素。

*/
class Solution {
public:
    bool isSubsequence(string s, string t) {
        if (s.size() > t.size()) return false;

        vector<vector<int>> dp(s.size()+1, vector<int>(t.size()+1, 0));
        
        for (int i = 1; i <= s.size(); i++) {
            for (int j = 1; j <= t.size(); j++) {
                if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
                //不同的地方
                else dp[i][j] = dp[i][j - 1];
            }
        }
        if (dp[s.size()][t.size()] == s.size()) return true;
        return false;
    }
};

相关推荐

  1. Leetcode 392 判断序列

    2024-05-26 05:10:23       46 阅读
  2. leetcode392--判断序列

    2024-05-26 05:10:23       35 阅读
  3. Leetcode 392. 判断序列

    2024-05-26 05:10:23       22 阅读
  4. 动态规划 Leetcode 392 判断序列

    2024-05-26 05:10:23       30 阅读
  5. leetcode--判断序列

    2024-05-26 05:10:23       30 阅读

最近更新

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

    2024-05-26 05:10:23       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 05:10:23       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 05:10:23       82 阅读
  4. Python语言-面向对象

    2024-05-26 05:10:23       91 阅读

热门阅读

  1. 单体应用与微服务的优缺点

    2024-05-26 05:10:23       33 阅读
  2. Vue 组件的生命周期钩子有哪些用途是什么

    2024-05-26 05:10:23       28 阅读
  3. 家政项目day3 区域服务模块开发

    2024-05-26 05:10:23       33 阅读
  4. [个人笔记] 记录CentOS7构建docker-ce的过程

    2024-05-26 05:10:23       30 阅读
  5. FOC之反park变化推导笔记

    2024-05-26 05:10:23       21 阅读
  6. git push

    2024-05-26 05:10:23       22 阅读
  7. 基于python flask的web服务

    2024-05-26 05:10:23       25 阅读
  8. Vue3:封装Table 表格组件问题修改

    2024-05-26 05:10:23       37 阅读
  9. redis查看一个key占用了多少内存

    2024-05-26 05:10:23       31 阅读
  10. 常见 HTTP 状态码及其含义

    2024-05-26 05:10:23       28 阅读