。现要求各位实现字符串通配符的算法。
要求:
实现如下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;
}