真的受不了了,姐做了一天一夜,一夜未睡,从网上陷阱数据也对,也对,他妹的就是过不了,一生气,从新打一遍换了变量名称就对了,什么节奏呀
代码如下:
#include <stdio.h>
#include <string.h>
#define N 100010
int next[N];
void get_next(char ss[])
{
int i,j,len; //int i=1,j=0;这样写编译器可以通过,可是提交就不对,我也不知道为啥
i=1,j=0;
len=strlen(ss);
next[0]=-1;
while(i<len){
if(j==-1||ss[i]==ss[j]){
++i;++j;next[i]=j;
}
else
j=next[j];
}
}
int kmp(char ss[],char s[]){
int i,j;
int len1=strlen(ss);
int len2=strlen(s);
get_next(ss);
i=0,j=0;
while(i<len2){
if(j==-1||s[i]==ss[j]){
++i;++j;
}
else
j=next[j];
}
// if(i==len2)
return j;
// return 0;
}
int main(){
char str1[N],str2[N];
while(scanf("%s%s",str1,str2)!=EOF)
{
int x1=kmp(str1,str2);
int x2=kmp(str2,str1);
if(x1==x2)
{
if(strcmp(str1,str2)>0)
{
printf("%s",str2);
printf("%s\n",str1+x1);
}
else
{
printf("%s",str1);
printf("%s\n",str2+x1);
}
}
else if(x1>x2)
printf("%s%s\n",str2,str1+x1);
else
printf("%s%s\n",str1,str2+x2);
}
return 0;
}