poj1936---subsequence(判断子串)

时间:2022-01-03 03:53:04
#include<stdlib.h>
#include<stdio.h> int main()
{
char s[],t[];
char *p1,*p2;
while(scanf("%s%s",s,t)!=EOF)
{
p1=s;
p2=t;
while(*p1 && *p2)
{
if(*p1 != *p2)
p2++;
else
{
p2++;
p1++;
}
}
if(*p1=='\0')
printf("Yes\n");
else
printf("No\n");
}
return ;
}

题意:判断s是不是t的字串

s: abcde

t:bcdefasdfsdfasdfsd

让s和t的左边对齐

p1指向a     p2指向b

如果不等,让p2右移,直到找到,然后两个指针同时右移

有三种情况:

*p1 是 \0  *p2 是  \0

*p1 是 \0  *p2 不是\0

*p1 不是\0   *p2是\0

*p1是\0就一定将s串走完了 Yes