Bailian2976 Bailian1936 All in All【字串匹配】
阿新 • • 發佈:2018-11-22
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; }