Bailian2976 Bailian1936 All in All【字符串匹配】

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;  
} 

猜你喜欢

转载自www.cnblogs.com/tigerisland45/p/9998899.html
ALL