首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
最长公共子串
[编程题]最长公共子串
热度指数:198753
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给定两个字符串str1和str2,输出两个字符串的最长公共子串
题目保证
str1和str2的
最长公共子串存在且唯一。
数据范围:
要求: 空间复杂度
,时间复杂度
示例1
输入
"1AB2345CD","12345EF"
输出
"2345"
备注:
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(22)
邀请回答
收藏(1745)
分享
提交结果有问题?
280个回答
232篇题解
开通博客
数据结构和算法
发表于 2021-07-05 09:30:15
精华题解
动态规划解决 注意这题求的是最长公共子串,不是最长公共子序列,子序列可以是不连续的,但子串一定是连续的。 定义dp[i][j]表示字符串str1中第i个字符和str2种第j个字符为最后一个元素所构成的最长公共子串。如果要求dp[i][j],也就是str1的第i个字符和str2的第j个字符为最后一个元
展开全文
牛客题解官
发表于 2022-04-22 12:40:18
精华题解
题目主要信息: 查找两个字符串str1,str2中的最长的公共子串 保证str1和str2的最长公共子串存在且唯一 举一反三: 学习完本题的思路你可以解决如下题目: BM65 最长公共子序列(二) BM71.最长上升子序列(一) BM73 最长回文子串 BM75 编辑距离(一) BM76 正则表
展开全文
士大夫色弱
发表于 2020-11-08 21:38:15
最长公共子串 题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。示例1输入"1AB2345CD","12345EF"返回值"2345" 这条题目被归类为动态规划,于是我使用动态规划的思路写了一个算法: /** * longest
展开全文
Arktische
发表于 2020-11-18 10:05:13
思路 一看到两个字符串的“最值”问题,一般想到二维dp。很自然地想到把str1前i个字符和str2前j个字符最长公共子串的长度作为dp[i][j],但由于子串定义必须是原字符串连续的序列,这样定义无法找到递推关系,因此需要加限定条件——以str1[i-1]和str2[j-1]结尾的最长公共子串长度。
展开全文
小青年201909292117791
发表于 2022-03-15 19:51:07
滑窗这样写可能更加直接一点吧, 1.首先给字符串1定义一个头指针,然后比较str1[left,i]这个子字符串是否在串2中,若在赋值给res 2.若不在,则将left+1,继续向后移动,直到结束 # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # longest c
展开全文
一株木棉1
发表于 2021-01-05 19:18:10
两种实现方式可以优化哦! 第一种 字符串包含 ,内存占用较大 maxlen :记录最长字串的长度 index:最长字串的下标 思路: str1 包含str2 中的最长字串  
展开全文
Lanerx
发表于 2021-09-23 20:04:40
import java.util.*; public class Solution { /** * longest common substring * @param str1 string字符串 the string * @param str2 strin
展开全文
alfred_fomo
发表于 2021-02-27 12:52:50
可以参考leetcode上面的【1143. 最长公共子序列】 (https://leetcode-cn.com/problems/longest-common-subsequence/solution/1143-zui-chang-gong-gong-zi-xu-lie-dong-zde2v/) 区
展开全文
总之就是非常菜
发表于 2021-01-09 16:58:15
思路最长公共子串是两个字符串最长相同的连续子序列;最长公共子序列是两个字符串最长相同的可非连续子序列,思路可以和最长公共子序列一样(动态规划经典例题——最长公共子序列和最长公共子串 ),但是仅仅用二维数组只能得到递推关系,即当前最优解为上一个解+1:dp[i][j]=dp[i-1][j-1],无法确
展开全文
赵阳201905051755388
发表于 2021-12-19 15:58:29
class Solution { public: /** * 双指针 */ string LCS(string str1, string str2) { int first = 0, second = 0; int maxLen = 0; string res; while (se
展开全文
//returnasea
发表于 2021-09-30 23:19:26
dp[i][j]表示str1[0,i-1]和str2[0,j-1]的最长公共子串的长度,本题的关键是在dp遍历的过程中记录最长公共子串的结尾下标,根据结尾下标以及长度就可以求出子串。 class Solution { public: /** * longest common sub
展开全文
牛客906583710号
发表于 2021-03-09 15:47:21
实际上是最长连续公共子串 class Solution: def LCS(self , str1 , str2 ): n, m = len(str1), len(str2) dp = [[0] * (m+1) for _ in range(n+1)]
展开全文
问题信息
动态规划
难度:
280条回答
1745收藏
13661浏览
热门推荐
通过挑战的用户
查看代码
有线_02
2023-03-12 14:15:05
HelloWo...
2023-03-10 09:59:58
||||||
2023-03-05 18:59:55
牛客79085...
2023-02-19 07:06:03
yishuihai
2022-10-29 23:39:21
相关试题
编程题 ,按照要求创建Java 应...
Java
评论
(1)
3.1996至2003年间,从事高...
资料分析
言语理解与表达
资料分析
评论
(1)
电路板布线的时候尽量采用( )折线布线
PCB
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
最长公共子串
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ public String LCS (String str1, String str2) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ string LCS(string str1, string str2) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # longest common substring # @param str1 string字符串 the string # @param str2 string字符串 the string # @return string字符串 # class Solution: def LCS(self , str1 , str2 ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ public string LCS (string str1, string str2) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ function LCS( str1 , str2 ) { // write code here } module.exports = { LCS : LCS };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # longest common substring # @param str1 string字符串 the string # @param str2 string字符串 the string # @return string字符串 # class Solution: def LCS(self , str1: str, str2: str) -> str: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ func LCS( str1 string , str2 string ) string { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ char* LCS(char* str1, char* str2 ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # longest common substring # @param str1 string字符串 the string # @param str2 string字符串 the string # @return string字符串 # class Solution def LCS(str1, str2) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ def LCS(str1: String,str2: String): String = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ fun LCS(str1: String,str2: String): String { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ public String LCS (String str1, String str2) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ export function LCS(str1: string, str2: string): string { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ func LCS ( _ str1: String, _ str2: String) -> String { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ pub fn LCS(&self, str1: String, str2: String) -> String { // write code here } }
"1AB2345CD","12345EF"
"2345"