累计大概提交了其七次吧,这里的话有一个地方是在通配的时候需要注意下,直接暴力求解的,基本上没有用到什么技巧,单个能通配就通配,是?按照单个字符处理,再去看''的情况,这个情况的话,直接循环往后匹配,需要匹配的字符串往后循环直到找到匹配的后一位,这里需要注意可能会遇到?的情况,可以把?当作里的,因为可以直接匹配,跳过就可以了,继续以往后匹配,如果遇到有两个?的情况,也就是*??的情况,也可以直接往后匹配

#include<iostream>
using namespace std;
string str1,str2;
int main(){
    while(cin>>str1>>str2){
        int i,j;
        for(i=0,j=0;(str1[i]!=0&&str2[i]!=0);){
            if(str1[i]=='?'||str1[i]==str2[j]){
                //单个通配 
                i++;
                j++;
            }else if(str1[i]=='*'){
                //*多项通配 先将第一项通配 
                i++,j++; 
                //当下一项是问号时,匹配到问问号后的一项 
                while(str1[i]=='?') i++;
                //继续向下通配 
                while(str2[j]!=str1[i]&&str2[j]!=0){
                    j++;
                }                    
            }else if(str1[i]!=str2[j]){
                //不匹配 
                i++;
                j++; 
                break;
            }
        }
        if(j==str2.length()){
            cout<<"true"<<endl;
        }else{
            cout<<"false"<<endl;
        }
    }
    return 0;
}