class Solution {
public:
bool isMatch(const char *s, const char *p) {
int i = 0;
int j = 0;
int ri = -1;
int rj = -1;
int n = strlen(s);
int m = strlen(p);
while(i<n){
if(p[j] == '*'){
ri = i;
rj = j++;
}
else if(p[j] == '?' || p[j] == s[i]){
i++;
j++;
}
// 如果p[pp] != s[ps] 并且前面已经出现过*,可以理解为此时*是匹配字符的,所以看*到底匹配了多少个字符
else if(rj > -1){
i = ++ri;
j = rj+1;
}
else
return false;
}
while(j<m && p[j] == '*'){
j++;
}
return j == m;
}
};