class Solution {
public:
bool isMatch(const char *s, const char *p) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (!*p) return !*s;
int i = 0;
int j = 0;
int star = -1;
int back = -1;
while (s[i]) {
if (p[j] == '?' || s[i] == p[j]) {
i++; j++;
} else if (p[j] == '*') {
back = i;
star = j;
j++;
} else {
if (star != -1) {
i = back + 1;
j = star + 1;
back = i;
} else {
return false;
}
}
}
if (!s[i]) {
while (p[j] == '*')
j++;
return !p[j];
}
return false;
}
};
Small Case: 0ms
Large Case: 76ms
Time: O(m * n)
Space: O(1)