#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s[20],ans,com;
int t,n;
cin>>t;
while(t--)
{
ans.clear();
cin>>n;
for(int i=0;i<n;i++) cin>>s[i];
for(int i=3;i<=60;i++)
for(int j=0;i+j<=60;j++)
{
com=s[0].substr(j,i);
bool flag=true;
for(int k=1;k<n;k++)
if(s[k].find(com)==string::npos)
{
flag=0;break;
}
if(flag&&(com.length()>ans.length()||com.length()==ans.length()&&com<ans)) ans=com;
}
if(ans.length()) cout<<ans<<endl;
else cout<<"no significant commonalities"<<endl;
}
return 0;
}
string::find 找到返回起点,否则返回string::npos
POJ 3080 Blue Jeans【stl】
最新推荐文章于 2020-03-07 23:25:51 发布
本文介绍了一个字符串匹配算法,该算法用于从一组字符串中寻找最长且共同出现的子串。通过两层循环遍历不同长度和起始位置的子串,并验证这些子串是否存在于所有输入的字符串中。
400

被折叠的 条评论
为什么被折叠?



