2976:All in All
描述
给定两个字符串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
问题链接:Bailian2976 Bailian1936 All in All
问题描述:(略)
问题分析:
这两个问题与参考链接是同一题。输入2个字符串,s和t,看s是否是t的子串。t中的字符可以任意删除。只需要顺序匹配字符串即可。解体代码是直接CV来的。
程序说明:(略)
参考链接:UVA10340 POJ1936 ZOJ1970 All in All【字符串匹配】
题记:(略)
AC的C语言程序如下:
/* UVA10340 POJ1936 ZOJ1970 All in All */
#include <stdio.h>
#include <string.h>
#define MAXN 110000
char s[MAXN], t[MAXN];
int delstrcmp(char *s, char *t)
{
int i, j, slen, tlen;
slen = strlen(s);
tlen = strlen(t);
for(i=0, j=0; i<slen && j<tlen;) {
if(s[i] == t[j]) {
i++;
j++;
} else
j++;
}
return i == slen;
}
int main(void)
{
while(scanf("%s%s", s, t) != EOF)
printf("%s\n", delstrcmp(s, t) ? "Yes" : "No");
return 0;
}