代码随想录算法训练营第五十八天 | 392.判断子序列

392.判断子序列 

题目链接:代码随想录

视频讲解:动态规划,用相似思路解决复杂问题 | LeetCode:392.判断子序列_哔哩哔哩_bilibili

解题思路

本题和求最长公共子序列是一样的,值就是s字符串的长度,如果一致就返回true,如果不一致就是false

这题也可以看作编辑距离入门级别的题目,仅t字符串会删元素

dp容器依旧选择二维数组,行是s字符串,列是t的字符串

1.dp[i][j]  以i-1为结尾的字符串s,以j-1为结尾的字符串t的相同子序列的长度(方便初始化)

2. if(s[i-1] == t[j-1] ) dp[i][j] = dp[i-1][j-1] + 1    //应该是s和t的前一面一段的相同子序列的长度加一

    else                   dp[i][j] = dp[i][j-1]              //如果不相同,那么就删除t字符串这个当前字符,去判断j-1之前的字符串

3.初始化

dp[i][0] = 0;

dp[0][j] = 0 ;

4.遍历顺序

我们是从左上方和左方推导而来

因此从左到右,从上到下

for(int i =1 ; i<=s.size() ; i++)

        for(int j =1 ; j<=t,size() ; j++)

class Solution {
public:
    bool isSubsequence(string s, string t) {
        vector<vector<int>> dp(s.size()+1 , vector<int>(t.size()+1,0));  //以i-1,j-1为结尾的字符串的公共子序列长度
        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] ;         //如果不相等就对t进行删减
            }
        }
        if(dp[s.size()][t.size()]==s.size()) return true;
        return false;
    }
};

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 12:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 12:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 12:34:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 12:34:01       20 阅读

热门阅读

  1. C++设计模式---观察者模式

    2024-06-13 12:34:01       6 阅读
  2. Flutter状态管理

    2024-06-13 12:34:01       5 阅读
  3. ElasticSearch基本用法

    2024-06-13 12:34:01       7 阅读
  4. 【2024年计算机相关专业是否还值得选择】

    2024-06-13 12:34:01       8 阅读
  5. 理解JVM中的常量池

    2024-06-13 12:34:01       9 阅读
  6. GitLab中用户权限

    2024-06-13 12:34:01       7 阅读
  7. 面试题

    2024-06-13 12:34:01       5 阅读
  8. python调用web_service

    2024-06-13 12:34:01       6 阅读
  9. LVGL调试记录

    2024-06-13 12:34:01       6 阅读
  10. uniapp APP读取bin文件(仅测试安卓可用)

    2024-06-13 12:34:01       9 阅读
  11. python提取浮点数的小数部分-4种方法

    2024-06-13 12:34:01       7 阅读
  12. RIP协议

    2024-06-13 12:34:01       6 阅读
  13. freebsd 14.1 简易安全安装步骤

    2024-06-13 12:34:01       5 阅读