leetcode如何求最长公共子序列
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,小编给大家分享一下leetcode如何求最长公共子序列,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!给定两个字符串 tex
千家信息网最后更新 2025年01月31日leetcode如何求最长公共子序列
小编给大家分享一下leetcode如何求最长公共子序列,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。
若这两个字符串没有公共子序列,则返回 0。
示例 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 <= 1000
1 <= text2.length <= 1000
输入的字符串只含有小写英文字符。
解题思路:
1,注意是最长公共子序列,不是最长公共子串
2,最长公共子序列问题是经典的动态规划题
3,状态转移方程
A,若str1[i]==str2[j],则str1[:i]和str2[:j]最长公共子序列的长度为
str1[:i-1]和str2[:j-1]最长公共子序列的长度加一
B, str1[:i-1]和str2[:j], str1[:i]和str2[:j-1]两者中较长者
4,未来表示方便,存储数组长度比字符串长度多1
代码实现
func longestCommonSubsequence(text1 string, text2 string) int {
h:=len(text1)+1
w:=len(text2)+1
m:=make([][]int,h)
for i:=0;i
m[i]=make([]int,w)
}
for i:=1;i
for j:=1;j
if text1[i-1]==text2[j-1]{
m[i][j]=m[i-1][j-1]+1
}else{
if m[i-1][j]>m[i][j-1]{
m[i][j]=m[i-1][j]
}else{
m[i][j]=m[i][j-1]
}
}
}
}
return m[h-1][w-1]
}
以上是"leetcode如何求最长公共子序列"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
序列
字符
字符串
最长
两个
长度
输入
示例
篇文章
解释
输出
内容
不怎么
代码
动态
大部分
小写
思路
情况
数组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何复制数据库视图
网上订餐系统的数据库实验报告
软件开发薪资最高的
深圳市软件开发费人员用标准
服务器黄灯的硬盘还能识别吗
万德数据库财经学子计划
500g服务器多少钱
嵌入式网络技术论文
c 数据库技术期末
铜陵扫码洗车软件开发
网络安全是指通过不包括以下
聊天软件开发的特点有哪些
湖北软件开发工程师
软件开发资料在哪里
小型服务器机房多少钱
jfinal 获取数据库
c 数据库间数据同步
提供网络技术帮助犯罪
扫描二维码的数据库
未来网络技术绘画
属于软件开发模型的
外文数据库定制是啥意思
app棋类软件开发
汇顶软件开发医学电子
sol数据库备份目录修改
泰拉瑞亚虚拟服务器ip怎么修改
网络安全宣传周电子大屏
莱西朗东网络技术怎么样
家庭教育与网络安全重庆
阿里云服务器数据盘如何扩容