#include <iostream>
using namespace std;

int main() 
{
    string str1,str2;
    cin>>str1>>str2;
    string s2;
    int cnt=0;
  //jingen
    int l3=str1.length();
    int l4=str2.length();
    if(l3>l4)
    {
        string s=str1;
        str1=str2;
        str2=s;
    }
     int l1=str1.length();
    int l2=str2.length();
    for(int i=0;i<=l1;i++)
    {
        for(int j=0;j<=l2;j++)
        {
            string s1;
            if(str1[i]==str2[j])
            {
                int k=i,p=j;
                while(str1[k]==str2[p]&&k<l1&&p<l2)
                {
                    s1+=str2[p];
                    k++,p++;
                }
                int r1=s1.length();
                int r2=s2.length();
                if(r1>r2) s2=s1;
            }
            
        }
    }
    cout<<s2;
  return 0;
}

由题意可知此题寻找最长公共子串,且如果存在多个答案,输出在较短串中最先出现的那个。使更短的字符串为str1,另外一个为str2,两个for循环遍历两个字符串,若字符相同则往后看,s2更新最长的公共子串参与链接