题目描述
波波同学是位大四的学生,同时也是一位考研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
*/