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 }