1 public class Solution {
2 public boolean isMatch(String s, String p) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 int sLen = s.length(), pLen = p.length();
6 int i = 0, j = 0;
7 int ss = 0, starP = -1;
8 while (i < sLen) {
9
10 while(j < pLen && p.charAt(j) == '*'){
11 starP = j++;
12 ss = i;
13 }
14
15 if((j == pLen) || (s.charAt(i) != p.charAt(j) && p.charAt(j) != '?')){
16 if(starP < 0){
17 return false;
18 } else {
19 j = starP + 1;
20 i = ++ss;
21 }
22 } else{
23 i++;
24 j++;
25 }
26
27
28 }
29 while (j < pLen && p.charAt(j) == '*') {
30 j++;
31 }
32 return j == pLen;
33 }
34 }