赞
踩
题目描述:
查找两个字符串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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。