您的位置:首页 > 其它

华为oj初级 字符串通配符

2017-03-10 14:44 211 查看
。现要求各位实现字符串通配符的算法。

要求:

实现如下2个通配符:

*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)

?:匹配1个字符

输入:

通配符表达式;

一组字符串。

输出:

返回匹配的结果,正确输出true,错误输出false

#include<iostream>
#include<string>
using namespace std;
bool compare(string str1, string str2, int i, int j){
if (i == str1.size() && j == str2.size()){
return true;
}
if (i == str1.size()){
return false;
}
if (str1[i] == '*'){
return compare(str1, str2, i + 1, j) || compare(str1,str2,i,j+1);
}
if (str1[i] == '?' || str1[i] == str2[j]){
return compare(str1,str2,i+1,j+1);
}
return false;
}
int main(){
string str1,str2;
cin >> str1 >> str2;
if(compare(str1,str2,0,0)){
cout << "true" << endl;
}
else{
cout << "false" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: