问题描述:
我的代码:
#include<stdio.h>
int subseq(char text[],char pat[])
{
int i = 0;
int j = 0;
while(text[i] != '\0' && pat[j] != '\0')
if(text[i] != pat[j])
i++;
else
{
j++;
i++;
}
if(pat[j] == '\0')
return 1;
else
return 0;
}
int main()
{
char *text = "abcdefg";
char str[10];
gets(str);
printf("%d\n",subseq(text,str));
return 0;
}
标准答案:
#include<stdio.h>
#define FOUND 1
#define NOT_FOUND 0
int subsequence(char text[],char pat[],int loc[])
{
int t_len = strlen(text);
int p_len = strlen(pat);
int i,j;
if(p_len > t_len)
return NOT_FOUND;
for(i = j = 0;i < t_len && j < p_len;j++)
{
for(;i < t_len && text[i] != pat[j];i++)
;
if(i >= t_len)
return NOT_FOUND;
else
loc[j] = i;
}
}