当前位置:   article > 正文

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

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

编程题——查找两个字符串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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/987466
推荐阅读
相关标签
  

闽ICP备14008679号