| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 动态规划解最长公共子串 -> 正文阅读 |
|
[数据结构与算法]动态规划解最长公共子串 |
描述
给定两个字符串str1和str2,输出两个字符串的最长公共子串
题目保证str1和str2的最长公共子串存在且唯一。
示例1
" 12345"," 334"
" 34 "
备注:
1≤∣ str1∣ , ∣ str2∣≤5000
注意这题求的是最长公共子串,不是最长公共子序列,子序列可以是不连续的,但子串一
定是连续的。
思路
定义
dp[i][j]表示字符串str1中第i个字符和str2种第j个字符为最后一个元素所构成的最
长公共子串
。如果要求dp[i][j],也就是str1的第i个字符和str2的第j个字符为最后一个
元素所构成的最长公共子串,我们首先需要判断这两个字符是否相等。
如果不相等,那么他们就不能构成公共子串,也就是
dp[i][j]=0;
如 果 相 等 , 我 们 还 需 要 计 算 前 面 相 等 字 符 的 个 数 ,
其 实 就 是 dp[i -1][j -1] , 所 以 dp[i] [j]=dp[i -1][j -1]+1;
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:54:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |