标签:author min ble lin add 1.2 code msu contain
4 a b cat cats do do apple aapple
No Yes Yes No
/* *********************************************** Author :CKboss Created Time :2015年08月21日 星期五 09时23分23秒 File Name :HDOJ5414.cpp ************************************************ */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> using namespace std; const int maxn=100100; int n,m; int pip[maxn]; char S[maxn],T[maxn]; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T_T; scanf("%d",&T_T); while(T_T--) { scanf("%s",S); scanf("%s",T); n=strlen(S); m=strlen(T); if(n>m) { puts("No"); } else if(n==m) { if(strcmp(S,T)==0) puts("Yes"); else puts("No"); } else { T[m]='&'; bool flag=true; if(S[0]!=T[0]) flag=false; for(int i=0;i<n&&flag;i++) { bool temp=false; int st=0; if(i) st=pip[i-1]+1; for(int j=st;j<m;j++) { if(S[i]==T[j]&&S[i]!=T[j+1]) { /// find a point pip[i]=j; /// go back int ni=i+1; int ed=0; if(i) ed=pip[i-1]+1; for(int k=pip[i]-1;k>=ed;k--) { if(T[k]==S[ni]) { pip[ni]=pip[i]; ni++; } else break; } i=ni-1; temp=true; break; } } if(temp==false) flag=false; } /// spc judge start point if(pip[0]!=0&&flag) { int len=1; for(int i=1;i<n;i++) { if(S[i]==S[0]&&pip[0]==pip[i]&&len<pip[0]+1) len++; else break; } if(len!=pip[0]+1) flag=false; } if(flag==true) puts("Yes"); else puts("No"); } } return 0; }
标签:author min ble lin add 1.2 code msu contain
原文地址:http://www.cnblogs.com/blfbuaa/p/7003448.html