当前位置:网站首页>golang刷leetcode 动态规划(13) 最长公共子序列
golang刷leetcode 动态规划(13) 最长公共子序列
2022-08-02 18:53:00 【用户9710217】
给定两个字符串 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<h;i++{
m[i]=make([]int,w)
}
for i:=1;i<h;i++{
for j:=1;j<w;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]
}
边栏推荐
- From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"
- 86.(cesium之家)cesium叠加面接收阴影效果(gltf模型)
- 简单有效又有用的关闭antimalware service executable的方法·备份记录
- 药品研发--检验记录与检验报告书的书写细则
- 情景剧《重走长征路》上演
- 阿里35+老测试员生涯回顾,自动化测试真的有这么吃香吗?
- 【OpenNI2】资料整理 -- 不断更新中
- 3年半测试经验,20K我都没有,看来是时候跳槽了
- Detailed explanation of AtomicInteger
- 固态硬盘接口类型介绍
猜你喜欢
项目分析(复杂嵌入式系统设计)
Go----Go 语言快速体验之开发环境搭建及第一个项目HelloWord
【学习日记】win64配置openni的vs2022编译环境
Golang swagger :missing required param comment parameters
力扣 622. 设计循环队列
栈、队列和数组
基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
【C语言刷题】牛客JZ65——不用四则运算作加法
麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化
Boyun Selected as Gartner China DevOps Representative Vendor
随机推荐
日常开发中,String类中常用的方法
thinkphp框架5.0.23安全更新问题-漏洞修复-/thinkphp/library/think/App.php具体怎么改以及为什么要这么改
3年半测试经验,20K我都没有,看来是时候跳槽了
情景剧《重走长征路》上演
JVM内存和垃圾回收-05.虚拟机栈
Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
备战无人机配送:互联网派To C、技术派To B
Unity 打包和切换平台|Build Settings窗口介绍
视频隐写一
From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"
Electronic Industry Inventory Management Pain Points and WMS Warehouse Management System Solutions
博云入选 Gartner 中国 DevOps 代表厂商
实例034:调用函数
安装Mac版Mysql卡在Installation阶段,彻底清理mysql并重装mysql
What skills are the most practical for college students in communications?
洛谷P5094 MooFest G 加强版
Metaverse 001 | Can't control your emotions?The Metaverse is here to help you
基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
NIO's Selector execution process
【动态规划专项训练】基础篇