栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

动态规划最长连续子序列(动态规划求最长递增子序列)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态规划最长连续子序列(动态规划求最长递增子序列)

今天发现一个字符串判断的题,分享一下

判断子序列
        给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
        字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。
        (例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
        进阶:
        如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
        示例 1:
        输入:s = "abc", t = "ahbgdc"
        输出:true
        示例 2:
        输入:s = "axc", t = "ahbgdc"
        输出:false

主要有三种解法,

第一种双指针,就不写了

第二种,动态规划,解法是我参考官方的,解法挺好理解的

public static boolean isSubsequence(String s, String t) {
		 int n=s.length(); 
		 int m=t.length();
		 
		 int [][]nums=new int[m+1][26];
		 for(int i=0;i<26;i++) {
			 nums[m][i]=m;
		 }
		
		 for(int i=m-1;i>=0;i--) {
			 for(int j=0;j<26;j++) {
				 if(t.charAt(i) == j+'a') {
					 nums[i][j]=i;
				 }else {
					 nums[i][j]=nums[i+1][j];
				 }
			 }
		 }
		 
		 int add=0;
		 for(int i=0;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号