comefrom: <gouthampradhan>backtracking_WildcardMatching_1.java
code: public boolean isMatch(String s, String p) {
      int starIdx = -1;
      int starPosAtStr = -1;
      int j = 0;
      for (int i = 0, l = s.length(); i < l; ) {
        if (j < p.length()) {
          if (s.charAt(i) == p.charAt(j) || p.charAt(j) == '?') {
            i++;
            j++;
          } else if (p.charAt(j) == '*') {
            starIdx = j;
            starPosAtStr = i;
            j++; 
          } else if (starIdx != -1) {
            i = ++starPosAtStr;
            j = starIdx + 1;
          } else return false;
        } else if (starIdx != -1) {
          i = ++starPosAtStr;
          j = starIdx + 1;
        } else return false;
      }
      while (j < p.length()) {
        if (p.charAt(j) == '*') {
          j++;
        } else break;
      }
      return j == p.length();
    }
masked: public boolean var_0 ( String var_2 , String var_3 ) {
    int var_5 = - 1 ;
    int var_6 = - 1 ;
    int var_8 = 0 ;
    for ( int var_9 = 0 , var_11 = var_2 . length ( ) ;
    var_9 < var_11 ;
    ) {
      if ( var_8 < var_3 . length ( ) ) {
        if ( var_2 . charAt ( var_9 ) == var_3 . charAt ( var_8 ) || var_3 . charAt ( var_8 ) == '?' ) {
          var_9 ++ ;
          var_8 ++ ;
        }
        else if ( var_3 . charAt ( var_8 ) == '*' ) {
          var_5 = var_8 ;
          var_6 = var_9 ;
          var_8 ++ ;
        }
        else if ( var_5 != - 1 ) {
          var_9 = ++ var_6 ;
          var_8 = var_5 + 1 ;
        }
        else return false ;
      }
      else if ( var_5 != - 1 ) {
        var_9 = ++ var_6 ;
        var_8 = var_5 + 1 ;
      }
      else return false ;
    }
    while ( var_8 < var_3 . length ( ) ) {
      if ( var_3 . charAt ( var_8 ) == '*' ) {
        var_8 ++ ;
      }
      else break ;
    }
    return var_8 == var_3 . length ( ) ;
  }
  