一、题目:
描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!
本题含有多组输入数据!
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
二、输入输出示例:
![](https://img-blog.csdnimg.cn/20210821205852330.png)
三、思路:
固定最小的字符串,然后遍历另一个字符串,比较字符是否相同,相同则继续向下比并记录相同子串的字符数量;不同则继续遍历另一个字符串,同样比较最小字符串的字符是否与另一个字符串的后序字符相同,以此类推。
因为最后要输出位数少的字符串中先出现的子串,所以一定要先找出位数小的字符串作为外循环。
四、代码:
#include<iostream>
using namespace std;
#include<string>
int main()
{
string s1, s2;
while (cin >> s1 >> s2)
{
int min, max;
string t1, t2;
//找到最小的字符串,存入t1,另一个存入t2
if (s1.size() <= s2.size())
{
min = s1.size();
max = s2.siz