题目描述
波波同学是位大四的学生,同时也是一位考研er。为了考上北京邮电大学,他准备了很长时间。不久前,考研成绩终于公布了。波波登陆了成绩查询网站,发现自己密码竟然忘记了!但是幸好,他还记得其中的某些字母。请你判断,他记忆中的字母是否是正确密码的片段。
输入
多组样例,每组样例有两行。第一行为正确密码,第二行为波波记得的密码片段,'*'号表示波波不知道的密码片段,可能任意长,也可能为零。每行不超过110字符,首尾不会出现'*'。
输出
对于每组样例,能得到正确密码的输出yes,不能的输出no。
样例输入
abcdefg ab*f fnoeend f*ed ajfneogbb aj*n*b
样例输出
yes
no
yes
仅作参考:
#include<stdio.h> #include<string.h> int main() { char str[115],ch[115]; int i,j,lens,lenc,flog,flag; while(scanf("%s",str)>0) { getchar(); scanf("%s",ch); lens=strlen(str); lenc=strlen(ch); flog=1;flag=0; for(i=0,j=0;i<lens&&j<lenc;i++,j++) if(str[i]!=ch[j]&&ch[j]!='*'&&flag==0) { flog=0;break; } else if(ch[j]=='*') { for(j=j+1;j<lenc;j++) if(ch[j]!='*') break; flag=1; i--; j--; } else if(flag==1) { flag=0; int t1,t2; for(i=i;i<lens;i++) { t1=i; t2=j; for(;t2<lenc;t1++,t2++) if(ch[t2]!=str[t1]) break; if(t2==lenc||ch[t2]=='*') { i=t1-1;j=t2-1; break; } } if(i==lens) { flog=0; break; } } if(flog) printf("yes\n"); else printf("no\n"); } return 0; } /* dskajfajfdkkdsj ds***fdk*j djfksaljfdklfjkdsljfklsdjf djf*dk*djfds*djf */