这道题就按模拟逻辑做就可以,不过要注意*是可以作为空字符的,如果在完成匹配后p还有字符要判断是否为*。
class Solution {
public boolean isMatch(String s, String p) {
int i = 0,j = 0,s1 = 0,p1 = -1;
int sl = s.length();
int pl = p.length();
while(i<sl){
if(j<pl&&(s.charAt(i)==p.charAt(j)||p.charAt(j)=='?')){
i++;
j++;
}else if(j<pl&&p.charAt(j)=='*'){
p1 = j;
s1 = i;
j++;
}else if(p1!=-1){
j = p1 + 1;
s1++;
i = s1;
}else{
return false;
}
}
while(j<pl){
if(p.charAt(j)!='*'){
return false;
}
j++;
}
return true;
}
}