UVA_10340
我们不妨从左至右依次生成字符串s,这样我们只要依次扫描t,如果当前字符和s中待生成的字符一样,就拿出来生成即可,这样可以保证每个所需字符在t中拿出时的位置都是尽可能靠左的,这样和拿出一个更靠右一点的相同的字符相比,所得到的结果至少不会更差。
#include<stdio.h> #include<string.h> #define MAXL 1000010 char s[MAXL], t[MAXL]; int process() { int i = 0; for(int j = 0; t[j]; j ++) if(s[i] == t[j]) ++ i; return s[i] == 0; } int main() { while(scanf("%s%s", s, t) == 2) { printf(process() ? "Yes\n" : "No\n"); } return 0; }