注意是较小串中首次出现的
附上较大串中首次出现和较小串首次出现的代码
#include <stdio.h>
#include <string.h>
void jiaohuan(char str1[],int length1,char str2[],int length2)
{
char str[301];
int i;
for(i=0;i<length1;i++) str[i]=str1[i];
for(i=0;i<length2;i++) str1[i]=str2[i];
str1[i]='\0';
for(i=0;i<length1;i++) str2[i]=str[i];
str2[i]='\0';
}
/*int compare(char str1[],int length1,char str2[],int length2,int max)//长串中先出现的
{
int i,j,jud;
for(i=0;i<length1-max+1;i++)
{
if(max==length2)
{
for(j=0;j<length2;j++)
{
jud=1;
for(int k=0;k<max;k++)
if(str1[i+k]!=str2[j+k]) {jud=0;break;}
if(jud==1)
{
for(int k=0;k<max;k++) printf("%c",str2[i+k]);
return 1;
}
}
}
else
{
for(j=0;j<length2-max+1;j++)
{
jud=1;
for(int k=0;k<max;k++)
if(str1[i+k]!=str2[j+k]) {jud=0;break;}
if(jud==1)
{
for(int k=0;k<max;k++) printf("%c",str1[i+k]);
return 1;
}
}
}
}
return 0;
}*/
int compare(char str1[],int length1,char str2[],int length2,int max)//短串中先出现
{
int i,j,jud;
for(i=0;i<length2-max+1;i++)
for(j=0;j<length1-max+1;j++)
{
jud=1;
for(int k=0;k<max;k++)
if(str2[i+k]!=str1[j+k]) {jud=0;break;}
if(jud==1)
{
for(int k=0;k<max;k++) printf("%c",str2[i+k]);
return 1;
}
}
return 0;
}
int main()
{
char str_sh[301],str_l[301];
scanf("%s%s",str_sh,str_l);
int length1,length2;
length1=strlen(str_sh);
length2=strlen(str_l);
int max=length1;
if(max>length2)
{
max=length2;
jiaohuan(str_sh, length1, str_l, length2);
}
length1=strlen(str_sh);
length2=strlen(str_l);
while(max)
{
if(compare(str_l, length2, str_sh, length1, max)) break;
max--;
}
return 0;
}

京公网安备 11010502036488号