编程题——查找两个字符串a,b中的最长公共子串

该博客介绍了一道编程题,旨在查找两个字符串的最长公共子串。如果存在多个公共子串,需要返回较短字符串中最早出现的一个。示例中,输入字符串为'abcdefghijklmnop'和'abcsafjklmnopqrstuvw',输出的最长公共子串是'jklmnop'。文章可能包含解决这个问题的动态规划算法实现。
摘要由CSDN通过智能技术生成

编程题——查找两个字符串a,b中的最长公共子串


题目描述:
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符

示例:
输入
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出
jklmnop


程序代码如下:



#include <iostream>
#include <string>
#include <vector>
using namespace std;

/*本题采用动态规划求解
 *首先来分析一下思路:
 *首先创建一个二维数组保存公共子串长度,以较小串的长度+1为行数,较大串的长度+1为列数,初始值全为0
 *我们从较小串的第一个字符开始在较大串中全部查找一遍,如果有该字符则更新数组对应位置的值,直到较小字符串遍历完
 *	更新方式为[i][j] = [i-1][j-i]+1;在此过程中不断更新最大子串的长度max及起始位置start
 *最后从较小串的start位置打印长度为max的子串即可*/

void findLCS(string s1, string s2)
{
   
	int l1 = s1.size
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值