首页 > 编程语言 >算法学习day55动态规划part15-115、392

算法学习day55动态规划part15-115、392

时间:2023-06-14 23:46:40浏览次数:45  
标签:String int part15 115 392 length public dp

package LeetCode.DPpart15;

public class DistinctSubsequences_115 {
    public int numDistinct(String s, String t) {
        int[][] dp = new int[s.length() + 1][t.length() + 1];
        for (int i = 0; i < s.length() + 1; i++) {
            dp[i][0] = 1;
        }

        for (int i = 1; i < s.length() + 1; i++) {
            for (int j = 1; j < t.length() + 1; j++) {
                if (s.charAt(i - 1) == t.charAt(j - 1)) {
                    dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
                }else{
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }

        return dp[s.length()][t.length()];
    }
}
package LeetCode.DPpart15;
/**
 * 392. 判断子序列
 * 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
 * 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
 * 进阶:
 * 如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
 * */
public class IsSubsequence_392 {
    public boolean isSubsequence(String s, String t) {
        int length1 = s.length(); int length2 = t.length();
        int[][] dp = new int[length1+1][length2+1];
        for(int i = 1; i <= length1; i++){
            for(int j = 1; j <= length2; j++){
                if(s.charAt(i-1) == t.charAt(j-1)){
                    dp[i][j] = dp[i-1][j-1] + 1;
                }else{
                    dp[i][j] = dp[i][j-1];
                }
            }
        }
        if(dp[length1][length2] == length1){
            return true;
        }else{
            return false;
        }
    }
}

 

标签:String,int,part15,115,392,length,public,dp
From: https://www.cnblogs.com/lipinbigdata/p/17481641.html

相关文章

  • 51nod-1158 全是1的最大子矩阵(单调栈)
    原题链接1158 全是1的最大子矩阵基准时间限制:1 秒空间限制:131072 KB分值: 80 难度:5级算法题 收藏 关注Input第1行:2个数m,n中间用空格分隔(2 <= m,n <= 500)第2 - N + 1行:每行m个数,中间用空格分隔,均为0或1。......
  • jenkins中的坑_CreateProcess error=1392
    环境:windows11,jdk1.8,jenkins_2.346.war起因最近在使用jenkins部署项目的时候,填写仓库的url地址时,发现填完后报500这个错误,于是我打开jenkins的控制台,发现了这个报错,***java.io.IOException:CreateProcesserror=1392,文件或目录损坏且无法读取。***我就把这个错误信息去百度......
  • m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
    1.算法仿真效果Quartusii18.0+DE2-115开发板测试结果如下: 一个DE2-115做发射,一个DE2-115做接收 发射0010 发射1001  发射1011 2.算法涉及理论知识概要        UDP是UserDatagramProtocol的简称,中文名是用户数据报协议,是OSI(OpenSystemInterc......
  • P3392 涂国旗 题解
    题目大意题目真的是不说人话......有一个国家的国旗是由一个N*M的方格组成的。如果想要这面国旗合法,就必须满足要求:国旗从上到下必须是白色、蓝色和红色,顺序不能改变。每一种颜色都至少有一行。小a这时候捡到了一块破布,希望你通过涂颜色的方式,把破布成合法的国旗,并且要......
  • 1156. 单字符重复子串的最大长度
    如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串。给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符重复的子串。返回其中最长的子串的长度。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/swap-for-longest-repeated-......
  • 115. 不同的子序列
    给你两个字符串s和t,统计并返回在s的子序列中t出现的个数。题目数据保证答案符合32位带符号整数范围。示例1:输入:s="rabbbit",t="rabbit"输出:3解释:如下所示,有3种可以从s中得到"rabbit"的方案。rabbbitrabbbitrabbbit>动态规划首先dp[i][j]......
  • 【汽车处理器】TMS5701115CPGEQQ1 Hercules™ TMS570 ARM® Cortex®-R
    TMS5701115CPGEQQ116/32位RISC闪存微控制器(MCU)是一个用于安全系统的高性能汽车级微控制器系列。其采用的安全架构包括锁步中的双CPU、CPU和内存内置自检(BIST)逻辑、闪存和数据SRAM上的ECC、外设存储器上的奇偶校验以及外设I/O上的回路功能。TMS570器件集成了可提供高效1.66......
  • 392. 判断子序列
    给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的S,称作S1,S2,...,Sk其中k>=10亿,你需要依次检查它......
  • Leetcode 1156. 单字符重复子串的最大长度
    题目:如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串。给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符重复的子串。返回其中最长的子串的长度。难度:中等示例1:输入:text="ababa"输出:3示例2:输入:text="aaabaaa"输出......
  • 「解题报告」CF1152F2 Neko Rules the Catniverse (Large Version)
    发现有互不相等的限制,那就考虑一下连续段DP。每次从小到大考虑每个数是否填,填的话填到哪里即可。容易发现题目中的限制相当于要求每一个连续段的右边填的数不能与它差出\(m\),且容易发现每个段的差的要求一定不相等,那么我们可以直接\(2^m\)状压记录每个连续段的差值要求。然后......