当前位置: 首页 > news >正文

帮人网站开发维护违法seo公司推广宣传

帮人网站开发维护违法,seo公司推广宣传,网站和微网站,网页打不开什么原因1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…

1143. 最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。

两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

示例 1:

输入:text1 = “abcde”, text2 = “ace”
输出:3
解释:最长公共子序列是 “ace” ,它的长度为 3 。

示例 2:

输入:text1 = “abc”, text2 = “abc”
输出:3
解释:最长公共子序列是 “abc” ,它的长度为 3 。

示例 3:

输入:text1 = “abc”, text2 = “def”
输出:0
解释:两个字符串没有公共子序列,返回 0 。

提示:

  • 1 <= text1.length, text2.length <= 1000
  • text1 和 text2 仅由小写英文字符组成。

思路:(动态规划)

对于两个子序列 S1S1S1S2S2S2,找出它们最长的公共子序列。

定义一个二维数组 dp 用来存储最长公共子序列的长度,其中 dp[i][j] 表示 S1S1S1 的前 i 个字符与 S2S2S2 的前 j 个字符最长公共子序列的长度。考虑 S1iS1_iS1iS2jS2_jS2j 值是否相等,分为两种情况:

  • S1i==S2jS1_i == S2_jS1i==S2j 时,那么就能在 S1S1S1 的前 i -1 个字符与 S2S2S2 的前 j -1 个字符最长公共子序列的基础上再加上 S1iS1_iS1i 这个值,最长公共子序列长度加 1,即 dp[i][j] = dp[i-1][j-1] + 1。
  • S1i!=S2jS1_i != S2_jS1i!=S2j 时,此时最长公共子序列为 S1S1S1的前 i -1 个字符和 S2 的前 j 个字符最长公共子序列,或者 S1S1S1 的前 i 个字符和 S2S2S2 的前 j -1 个字符最长公共子序列,取它们的最大者,即 dp[i][j] = max{ dp[i-1][j], dp[i][j-1] }。

综上,最长公共子序列的 状态转移方程 为:

dp[i][j]={dp[i−1][j−1]+1S1i==S2jmax⁡(dp[i−1][j],dp[i][j−1])S1i<>S2jd p[i][j]=\left\{\begin{array}{rr} d p[i-1][j-1]+1 & S 1_{i}==S 2_{j} \\ \max (d p[i-1][j], d p[i][j-1]) & S 1_{i}<>S 2_{j} \end{array}\right.dp[i][j]={dp[i1][j1]+1max(dp[i1][j],dp[i][j1])S1i==S2jS1i<>S2j

对于长度为 m 的序列 S1 和长度为 n 的序列 S2,dp[m][n] 就是序列 S1 和序列 S2 的最长公共子序列长度。

最长递增子序列 相比,最长公共子序列有以下不同点:

  • 针对的是两个序列,求它们的最长公共子序列。
  • 在最长递增子序列中,dp[i] 表示以 SiS_iSi 为结尾的最长递增子序列长度,子序列必须包含 SiS_iSi ;在最长公共子序列中,dp[i][j] 表示 S1 中前 i 个字符与 S2 中前 j 个字符的最长公共子序列长度,不一定包含 S1iS1_iS1iS2jS2_jS2j
  • 在求最终解时,最长公共子序列中 dp[m][n] 就是最终解,而最长递增子序列中 dp[n] 不是最终解,因为以 SnS_nSn 为结尾的最长递增子序列不一定是整个序列最长递增子序列,需要遍历一遍 dp 数组找到最大者。

代码:(Java)

public class LongestCommonSubsequence {public static void main(String[] args) {// TODO Auto-generated method stubString text1 = "abcde";String text2 = "ace";System.out.println(longestCommonSubsequence(text1,text2));}public static int longestCommonSubsequence(String text1, String text2) {int m = text1.length();int n = text2.length();int[][] dp = new int[m + 1][n + 1];for(int i = 1; i <= m; i++) {for(int j = 1; j <= n; j++) {if(text1.charAt(i - 1) == text2.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + 1;}else {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[m][n];}
}

运行结果:

在这里插入图片描述

复杂度分析:

  • 时间复杂度O(mn)O(mn)O(mn),需要遍历两个字符串。
  • 空间复杂度O(mn)O(mn)O(mn),需要m*n的二维数组。

注:仅供学习参考!

题目来源:力扣。

http://www.hkea.cn/news/535183/

相关文章:

  • 网站建设吉金手指专业13中国营销网站
  • 做销售在哪些网站注册好百度产品
  • dw做汽车网站seo排名工具提升流量
  • 网络培训学校排名奉化seo页面优化外包
  • vps除了做网站还能做什么晨阳seo服务
  • seo网站建设优化什么意思网络营销与直播电商专业就业前景
  • 工程建设企业网站网站关键词优化应该怎么做
  • 修复wordpress青岛网站优化
  • 敦煌网站做外贸怎样网页推广怎么做的
  • 南京网站建设优化今日头条普通版
  • 网站编辑的工作职能有哪些活动营销案例100例
  • 小程序招商加盟平台我是seo关键词
  • wordpress 发帖机镇江抖音seo
  • 网站建设的小结可以发外链的论坛有哪些
  • 网站正常打开速度网店营销与推广策划方案
  • 义乌 网站制作进入百度app
  • 做外围网站赌球红树林seo基础入门免费教程
  • 绿色风格网站seo排名赚钱
  • 南宁企业免费建站百度推广营销怎么做
  • 建立个人网站的成本短视频seo营销系统
  • 深圳公司名称大全网站结构优化的内容和方法
  • 安康市代驾公司上海网站关键词排名优化报价
  • 怎么在网站上建设投票统计在线培训系统app
  • 泰州网站建设哪家好网站seo的主要优化内容
  • 洛卡博网站谁做的seo权重查询
  • 东莞网络科技公司有哪些山东网站seo
  • 网站建设需要学什么网站模板购买
  • 用html做的游戏网站关键词推广效果分析
  • 做影视网站引流正规推广平台有哪些
  • 免费下载简历模板北京seo排名厂家