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

    }
};
相关推荐
xlq223223 小时前
22.多态(上)
开发语言·c++·算法
666HZ6663 小时前
C语言——高精度加法
c语言·开发语言·算法
sweet丶3 小时前
iOS MMKV原理整理总结:比UserDefaults快100倍的存储方案是如何炼成的?
算法·架构
云里雾里!4 小时前
力扣 209. 长度最小的子数组:滑动窗口解法完整解析
数据结构·算法·leetcode
CoderYanger5 小时前
递归、搜索与回溯-穷举vs暴搜vs深搜vs回溯vs剪枝:12.全排列
java·算法·leetcode·机器学习·深度优先·剪枝·1024程序员节
憨憨崽&5 小时前
进击大厂:程序员必须修炼的算法“内功”与思维体系
开发语言·数据结构·算法·链表·贪心算法·线性回归·动态规划
chem41116 小时前
C 语言 函数指针和函数指针数组
c语言·数据结构·算法
liu****7 小时前
八.函数递归
c语言·开发语言·数据结构·c++·算法
客梦7 小时前
数据结构-树结构
数据结构·笔记
CM莫问7 小时前
详解机器学习经典模型(原理及应用)——岭回归
人工智能·python·算法·机器学习·回归