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

    }
};
相关推荐
.格子衫.2 小时前
022数据结构之树状数组——算法备赛
数据结构·算法·1024程序员节
黑科技Python2 小时前
生活中的“小智慧”——认识算法
学习·算法·生活
Yupureki2 小时前
从零开始的C++学习生活 16:C++11新特性全解析
c语言·数据结构·c++·学习·visual studio
sali-tec3 小时前
C# 基于halcon的视觉工作流-章52-生成标定板
开发语言·图像处理·人工智能·算法·计算机视觉
IT古董3 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(4)粗排算法模型多目标算法(Multi Task Learning)及目标融合
人工智能·算法·1024程序员节
熬了夜的程序员3 小时前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵
對玛祷至昏4 小时前
数据结构理论知识
数据结构·算法·排序算法
oliveira-time4 小时前
二分搜索(Binary Search)
算法
黄思搏4 小时前
红黑树 - Red-Black Tree 原理与 C# 实现
数据结构·1024程序员节
剑锋所指,所向披靡!4 小时前
数据结构的基本概念
数据结构