算法训练营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;

    }
};
相关推荐
hrrrrb5 分钟前
【算法设计与分析】贪心算法
算法·贪心算法·代理模式
TracyCoder12317 分钟前
LeetCode Hot100(10/100)—— 53. 最大子数组和
算法·leetcode
Σίσυφος19001 小时前
霍夫变换vs LS vs RANSAC 拟合直线 MATLAB实现
算法·计算机视觉·matlab
闲人不梦卿1 小时前
数组和矩阵以及广义表
数据结构
假女吖☌1 小时前
限流算法-redis实现与java实现
java·redis·算法
蒟蒻的贤1 小时前
两数之和。
算法
wen__xvn1 小时前
代码随想录算法训练营DAY27第八章 贪心算法 part01
算法·贪心算法
We་ct2 小时前
LeetCode 125. 验证回文串:双指针解法全解析与优化
前端·算法·leetcode·typescript
客卿1232 小时前
力扣20-有效括号(多家面试题)
算法·leetcode·职场和发展
木井巳2 小时前
【递归算法】快速幂解决 pow(x,n)
java·算法·leetcode·深度优先