算法训练营day58

题目1:392. 判断子序列 - 力扣(LeetCode)

暴力解法

复制代码
class Solution {
public:
    bool isSubsequence(string s, string t) {
        if(s.size() > t.size()) return false;
        if(s.size() < t.size()) {
            swap(s, t);
        }
        bool reslut = false;
        int flag = 0;
        bool findflag = false;
        for(int i = 0;i < t.size();i++) {
            for(;flag < s.size();flag++) {
                if(s[flag] == t[i]) {
                    flag++;
                    findflag = true;
                    break;
                }
            }
            if(findflag) {
                findflag = false;
            }else return false;
        }
        return true;

    }
};

动态规划,其实和之前最长公共子序列一样,只不过最后就是比较以下dp数组的值是否和字符串s的长度相同

复制代码
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));
        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] = max(dp[i - 1][j], dp[i][j - 1]);
                    // 这里其实 = dp[i][j - 1]就可以                
                }
            }
        }
        if(dp[s.size()][t.size()] == s.size()) return true;
        else return false;

    }
};
相关推荐
地平线开发者5 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮6 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者6 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考6 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx10 小时前
CART决策树基本原理
算法·机器学习
Wect10 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱11 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway17 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风18 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect18 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript