• 392. 判断子序列(双指针dp)


    难度简单

     

    给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

    字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace""abcde"的一个子序列,而"aec"不是)。

    进阶:

    如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

    致谢:

    特别感谢 @pbrother 添加此问题并且创建所有测试用例。

    示例 1:

    输入:s = "abc", t = "ahbgdc"
    输出:true
    

    示例 2:

    输入:s = "axc", t = "ahbgdc"
    输出:false
    

    提示:

    • 0 <= s.length <= 100
    • 0 <= t.length <= 10^4
    • 两个字符串都只由小写字符组成。
    class Solution {
    public:
        bool isSubsequence(string s, string t) {
            int i = 0;
            int j = 0;
            while(i < s.size() && j < t.size()) {
                if(s[i]==t[j]) {
                    i++;j++;
                } else {
                    j++;
                }
            }
            return  i == s.size();
        }
    };

    dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。

     

     1 class Solution {
     2 public:
     3     bool isSubsequence(string s, string t) {
     4         int n = s.size();
     5         int m = t.size();
     6         // s[:i] 与t[:j] 子序列长度
     7         int dp[n+1][m+1]; 
     8 
     9         for(int i = 0;i < n+1; i++) {
    10             dp[i][0] = 0;
    11         }
    12         for(int j = 0; j < m+1;j++) {
    13             dp[0][j] = 0;
    14         }
    15 
    16         for(int i =1;i<n+1;i++) {
    17             for(int j = 1;j < m+1;j++) {
    18                 if(s[i-1]==t[j-1]) {
    19                     dp[i][j] = 1 +dp[i-1][j-1];
    20                 } else {
    21                     // 删除 t[j]
    22                     dp[i][j] = dp[i][j-1]; 
    23                 }
    24             }
    25         }
    26 
    27 
    28         return dp[n][m] == s.size();
    29     }
    30 };
  • 相关阅读:
    ELF文件&ELFminer初识
    模型融合——stacking原理与实现
    机器学习&恶意代码静态检测
    机器学习模型部署摘要
    Linux统计文件夹、文件数量的命令
    机器学习&恶意代码检测简介
    基于FastAPI的机器学习模型部署快速上手
    机器学习&恶意代码动态检测
    python 正则表达式
    给 zsh 自定义命令添加参数自动补全
  • 原文地址:https://www.cnblogs.com/zle1992/p/15260396.html
Copyright © 2020-2023  润新知