链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1281
code
#include<stdio.h>
#include<string.h>
char s[100005],t[100005];
int main()
{
while(scanf("%s %s",s,t) != EOF)
{
int len_s = strlen(s),len_t = strlen(t);
int i = 0, j = 0;
while( i < len_s && j < len_t)
{
if(s[i] == t[j])
{ i++; j++; }
else j ++;
}
if( i == len_s && j <= len_t) printf("Yes\n");
else printf("No\n");
}
return 0;
}
注意事项:
1)一开始我以为是一个双循环的字符串比较,考虑很久有没有优化的可能,甚至想到是否需要使用KMP算法,后来发现其实是个很简单的问题,只要遍历parent 字符串一边发现有子序列的字符就可以了。Orz
2)第一次碰见以EOF为结束的输入
3)对于这种没有说明字符有多长的尽可能将数组弄长一点