2976:All in All
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
- 给定两个字符串s和t,请判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。 输入
- 包括若干个测试数据。每个测试数据由两个ASCII码的数字和字母串s和t组成,s和t的长度不超过100000。 输出
- 对每个测试数据,如果s是t的子序列则输出“Yes”,否则输出“No”。 样例输入
-
sequence subsequence person compression VERDI vivaVittorioEmanueleReDiItalia caseDoesMatter CaseDoesMatter
样例输出
-
Yes No Yes No
来源
- Ulm Local 2002, POJ 1936, 程序设计实习2007
-
-
#include<stdio.h> #include<string.h> char str1[100010],str2[100010]; int flag[100010]; int main(){ while(scanf("%s %s",&str1,&str2)!=EOF){ int num=0; memset(flag,0,sizeof(flag)); int len1=strlen(str1),len2=strlen(str2); int j=0; for(int i=0;i<len1;i++){ for(;j<len2;){ if(str1[i]==str2[j]){ int k=j+1;j=k; flag[i]=1; break; } else j++; } } for(int i=0;i<len1;i++){ if(flag[i]==1) num++; } if(num==len1) printf("Yes\n"); else printf("No\n"); } return 0; }