O(n),参考双指针贪心
int charArraySize(char *arr){
int i=-1;
while(arr[++i]!='\0'){
}
return i;
}
bool isMatch(char * s, char * p){
int i = 0, j = 0, iStar = -1, jStar = -1, m = charArraySize(s), n = charArraySize(p);
while (i < m) {
if (j < n && (s[i] == p[j] || p[j] == '?')) {
++i, ++j;
} else if (j < n && p[j] == '*') {
iStar = i;
jStar = j++;
} else if (iStar >= 0) {
i = ++iStar;
j = jStar + 1;
} else return false;
}
while (j < n && p[j] == '*') ++j;//去除多余星号
return j == n;
}