题目:
给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。
'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串(包括空字符串)。
示例1:
输入:
s = "aa"
p = "a"
输出 : false
解释 : "a" 无法匹配 "aa" 整个字符串。
示例2:
输入:
s = "aa"
p = "*"
输出 : true
解释 : '*' 可以匹配任意字符串。
代码如下:
class Solution {
public:
bool isMatch(string s, string p) {
int i = 0, j = 0, iStar = -1, jStar = -1, m = s.size(), n = p.size();
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;
}
};