leetcode如何求最长公共子序列
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,小编给大家分享一下leetcode如何求最长公共子序列,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!给定两个字符串 tex
千家信息网最后更新 2024年11月27日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安全错误
数据库的锁怎样保障安全
公民网络安全培训
服务器安全责任
无线网络技术或应用的有
陕西招生网络技术
sql 映射数据库出错
手机软件开发选哪家
青岛岩颖网络技术有限公司
酒店数据库实训报告
广西理工计算机网络技术考试答案
互联网软件开发项目
网络安全电影感想
计算机工作与软件开发
软件开发企业主营业务收入
软件测试的面试数据库
国信黄岛互联网科技总部
不履行网络安全保护义务如何询问
mysql 数据库读写速度
mysql数据库驱动
软件开发前期即征即退如何填表
十四五规划网络安全利好
sql本机数据库不能访问
通信工程和数据库论文题目
光明新区软件开发定制
学软件开发好
网络安全面试题单选
服务器磁盘性能
科技馆互联网科普
肇庆oa软件开发哪家好
在线爆破数据库平台
十四五规划网络安全利好