求助 ,一个小函数的功能实现
这里有 a ,c,abc,cde
四个字符串,我想看看其中的任意一个是不是其他几个的前缀码。怎么样用c语言来实现呢 ,谢谢大家。
[解决办法]
只看前缀的话,可以不用kmp等算法
char *p[4]={...................};
for(int i=0;i <4;i++)
for(int j=i+1;j <4;j++)
if(p[i]的前strlen(p[i])个字符==p[j]前strlen(p[i])个字符)
printf(“%s是%s的前缀”,p[i],p[j]);
[解决办法]
#include <stdio.h>
int main()
{
char *p[] = { "a ", "c ", "abc ", "cde "};
int i = 0;
int j = 0;
int len = 0;
len = sizeof(p)/sizeof(p[0]);
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
if(strstr(p[i], p[j]) == p[i])
{
printf( "%s %s\n ", p[i], p[j]);
}
}
}
return 0;
}
[解决办法]
ls的ls的代码有点小错误
#include <stdio.h>
#include <string.h>
int main()
{
char *p[] = { "a ", "c ", "abc ", "cde "};
int i = 0;
int j = 0;
int len = 0;
len = sizeof(p)/sizeof(p[0]);
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
if(strstr(p[i], p[j]) == p[i])//
{
printf( "%s is the former of %s\n ", p[j], p[i]);
}
}
}
return 0;
}
----------------------
gcc下运行成功