判断两个字符串是否匹配,其中字符串中包括通配符*或?(串)。*代表0个或多个字符?代表一个字符 5

[输入形式]分两行入两个字符串,以结束,其中-一个字符串中包括通配符*或"?"(串),另一个为不包含*和“?的确定字符串[输出形式]判断两个字符串是否匹配,若匹配,输出y... [输入形式]

分两行入两个字符串,以结束,其中-一个字符串中包括通配符* 或"?" (串),另一个为不包含*和“?的确定字符串

[输出形式]

判断两个字符串是否匹配,若匹配,输出yes,不匹配输出no

[样例输入]

da?a*tu*e#datastructure#

[样例输出]yes

[样例说明]

第一个字符串中包含通配符,第二个字符串为确定字符串o字符串中可能有空格,字母均为小写字母。

[评分标准]

请大家在程字中写出必要的注释,如果程序没有必要的注释,将酌情扣分。请尽里使用效率高的算法,如结合KMP算法的思想。
展开
 我来答
高人仰北谋
2018-10-30 · TA获得超过3404个赞
知道大有可为答主
回答量:2259
采纳率:86%
帮助的人:782万
展开全部
给你一个用递归算法写的字符串匹配函数,
非常精练,你可以参考一下,希望能看懂。
输入:
s,指向含通配符的匹配字符串,
d,指向要匹配的字符目标
返回值
1,匹配一致
0,不能匹配

int StrMatch(const char *s,const char *d)
{ for(;*s;s++,d++)
{ if(*s=='*')
{ for(s++;;d++)
{ if(StrMatch(s,d))return 1;
if(*d==0)return 0;
}
}
if(*d==0)return 0;
if(*s!='?'&&*s!=*d)return 0;
}
return !(*d);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式