comefrom: <awangdev>Interleaving String_3.java
code: public boolean isInterleave(String s1, String s2, String s3) {
          if (s3 == null || (s1 == null && s2 == null) || s1.length() + s2.length() != s3.length()) {
          	return false;
          }
          boolean[][] DP = new boolean[s1.length() + 1][s2.length() + 1];
          DP[0][0] = true; 
  
          for (int i = 1; i <= s1.length(); i++) {
          	if (s3.charAt(i - 1) == s1.charAt(i - 1) && DP[i - 1][0]) {
          		DP[i][0] = true;
          	}
          }
  
          for (int j = 1; j <= s2.length(); j++) {
          	if (s3.charAt(j - 1) == s2.charAt(j - 1) && DP[0][j - 1]) {
          		DP[0][j] = true;
          	}
          }
  
          for (int i = 1; i <= s1.length(); i++) {
          	for (int j = 1; j <= s2.length(); j++) {
          		if ((s3.charAt(i + j - 1) == s1.charAt(i - 1) && DP[i - 1][j]) 
          			|| (s3.charAt(i + j - 1) == s2.charAt(j - 1) && DP[i][j - 1])) {
          			DP[i][j] = true;
          		}
          	}
          }
  
          return DP[s1.length()][s2.length()];
      }
masked: public boolean var_0 ( String var_2 , String var_3 , String var_4 ) {
    if ( var_4 == null || ( var_2 == null && var_3 == null ) || var_2 . length ( ) + var_3 . length ( ) != var_4 . length ( ) ) {
      return false ;
    }
    boolean [ ] [ ] var_9 = new boolean [ var_2 . length ( ) + 1 ] [ var_3 . length ( ) + 1 ] ;
    var_9 [ 0 ] [ 0 ] = true ;
    for ( int var_10 = 1 ;
    var_10 <= var_2 . length ( ) ;
    var_10 ++ ) {
      if ( var_4 . charAt ( var_10 - 1 ) == var_2 . charAt ( var_10 - 1 ) && var_9 [ var_10 - 1 ] [ 0 ] ) {
        var_9 [ var_10 ] [ 0 ] = true ;
      }
    }
    for ( int var_13 = 1 ;
    var_13 <= var_3 . length ( ) ;
    var_13 ++ ) {
      if ( var_4 . charAt ( var_13 - 1 ) == var_3 . charAt ( var_13 - 1 ) && var_9 [ 0 ] [ var_13 - 1 ] ) {
        var_9 [ 0 ] [ var_13 ] = true ;
      }
    }
    for ( int var_10 = 1 ;
    var_10 <= var_2 . length ( ) ;
    var_10 ++ ) {
      for ( int var_13 = 1 ;
      var_13 <= var_3 . length ( ) ;
      var_13 ++ ) {
        if ( ( var_4 . charAt ( var_10 + var_13 - 1 ) == var_2 . charAt ( var_10 - 1 ) && var_9 [ var_10 - 1 ] [ var_13 ] ) || ( var_4 . charAt ( var_10 + var_13 - 1 ) == var_3 . charAt ( var_13 - 1 ) && var_9 [ var_10 ] [ var_13 - 1 ] ) ) {
          var_9 [ var_10 ] [ var_13 ] = true ;
        }
      }
    }
    return var_9 [ var_2 . length ( ) ] [ var_3 . length ( ) ] ;
  }
  