<gouthampradhan>backtracking_WildcardMatching_1.java
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();
  }
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 ( ) ;
}
