Substrings
这道题只是简单的暴力
因为数值很小,暴力也不碍事
但是,这道题着重用了几个字符串函数!!!!
1.strstr函数。相当于KMP的作用,返回求子串在母串的位置(第一个为母串,第二个为子串)头文件为string.h
2.reverse函数,把函数翻转过来!头文件为 algorithm.h
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
char s[105][105],a[105],b[105];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
int minlen=1000,minnum=0,len;
for(int i=0; i<n; i++)
{
scanf("%s",s[i]);
len=strlen(s[i]);
if(len<minlen)
{
minlen=len;
minnum=i;
}
}
int flag=1,num=0,MAX=0;
for(int i=0; i<minlen; i++)
{
for(int j=i; j<minlen; j++)
{
flag=1,num=0;
for(int k=i; k<=j; k++)
{
a[k-i]=s[minnum][k];
b[j-k]=s[minnum][k];
num++;
}
a[num]='\0';
b[num]='\0';
int l=strlen(a);
for(int k=0; k<n; k++)
{
if(!strstr(s[k],a)&&!strstr(s[k],b))//如果找不到,flag=0表示没有
{
flag=0;
}
}
if(l>MAX&&flag)//如果有,且还大,那么就更换最大值
{
MAX=l;
}
}
}
printf("%d\n",MAX);
}
}