解题思路:
(1)使用递归
#include<iostream>
using namespace std;
bool helper(string s1,string s2) {
if(s1[0]==s2[0]) {
if(s1.length()>1 && s2.length()>1) return helper(s1.substr(1),s2.substr(1));
else if(s1.length()==1 && s2.length()==1) return true;
else return false;
} else if(s1[0]=='?') {
if(s1.length()>1 && s2.length()>1) return helper(s1.substr(1),s2.substr(1));
else if(s1.length()==1 && s2.length()==1) return true;
else return false;
} else if(s1[0]=='*') {
if(s1.length()>1 && s2.length()>1) return helper(s1.substr(1),s2)||helper(s1.substr(1),s2.substr(1))||helper(s1,s2.substr(1));
else if(s1.length()==1 && s2.length()==1) return true;
else if(s1.length()==1 && s2.length()>1) return true;
else return helper(s1.substr(1),s2);
} else return false;
return true;
}
int main() {
string s1,s2;
while(cin>>s1) {
cin>>s2;
if(helper(s1,s2)) cout<<"true"<<endl;
else cout<<"false"<<endl;
}
return 0;
}