题目描述 Description
输入N(2<=N<=20)个字符串,输出最长公共子串。
输入描述 Input Description
输入N
再输入N个字符串
输出描述 Output Description
输出最大公共子串。
样例输入 Sample Input
3
abce
cabk
jaab
样例输出 Sample Output
ab
跪给STL。。一个substr完美解决所有问题。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
string a[30],b[200];
int num=0;
bool cmp(string x,string y)
{
return x.length()>y.length();
}
int main()
{
string s;
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=0;i<a[1].length();i++)
{
int kg=0;
for(int j=i;j<a[1].length();j++)
{
s=a[1].substr(i,j-i+1);
for(int k=2;k<=n;k++)
{
if(a[k].find(s,0)!=string::npos)
continue;
else
{
kg=1;break;
}
}
if(kg==1)break;
else b[++num]=s;
}
}
sort (b+1,b+n+1,cmp);
cout<<b[1];
return 0;
}