求解字符串前缀,下面是我自己编写的代码:
#include<stdio.h>
#include<string.h>
main()
{
int n,i,j,n1[30],n2[30],count=0;char a[30][30],b[30][30];
for(i=0;i<30;i++)
{
n1[i]=0;
n2[i]=0;
}
scanf("%d",&n);getchar();
for(i=0;i<n;i++)
{
scanf("%s %s",a[i],b[i]);
}
for(i=0;i<n;i++)
{
j=0;
while(a[i][j]!='\0')
{
n1[i]++;
j++;
}
j=0;
while(b[i][j]!='\0')
{
n2[i]++;
j++;
}
}
for(i=0;i<n;i++)
{
if(n1[i]==n2[i])
{
if(strcmp(a[i],b[i])==0)
{
printf("%s",a[i]);
}
else
{
count=0;
for(j=0;j<n1[i];j++)
{
if(a[i][j]==b[i][j])
{
count++;
}
else break;
}
if(count==0)
{
printf("无公共前缀");
if(i<n-1)
{
printf("\n");
}
}
else
{
for(j=0;j<count;j++)
{
printf("%c",a[i][j]);
}
if(i<n-1)
{
printf("\n");
}
}
}
}
else if(n1[i]<n2[i])
{
count=0;
for(j=0;j<n1[i];j++)
{
if(a[i][j]==b[i][j])
{
count++;
}
else break;
}
if(count==0)
{
printf("无公共前缀");
if(i<n-1)
{
printf("\n");
}
}
else
{
for(j=0;j<count;j++)
{
printf("%c",a[i][j]);
}
if(i<n-1)
{
printf("\n");
}
}
}
else if(n1[i]>n2[i])
{
count=0;
for(j=0;j<n2[i];j++)
{
if(a[i][j]==b[i][j])
{
count++;
}
else break;
}
if(count==0)
{
printf("无公共前缀");
if(i<n-1)
{
printf("\n");
}
}
else
{
for(j=0;j<count;j++)
{
printf("%c",a[i][j]);
}
if(i<n-1)
{
printf("\n");
}
}
}
}
}
很简单粗暴,喜欢的话点个赞诺,谢谢您嘞!