<awangdev>Interleaving String_1.java
public boolean isInterleave(String s1, String s2, String s3) {
        if (s1 == null || s2 == null || s1.length() + s2.length() != s3.length()) {
            return false;
        }
        int m = s1.length();
        int n = s2.length();
        boolean[][] dp = new boolean[m + 1][n + 1];
        
        for (int i = 0; i <= m; i++) {
            for (int j = 0; j <= n; j++) {
                if (i == 0 && j == 0) { 
                    dp[i][j] = true;
                    continue;
                }
                
                dp[i][j] = false;
                if (i > 0 && s1.charAt(i - 1) == s3.charAt(i + j - 1)) {
                    dp[i][j] |= dp[i - 1][j];
                } 
                
                if (j > 0 && s2.charAt(j - 1) == s3.charAt(i + j - 1)) {
                    dp[i][j] |= dp[i][j - 1];
                }
            }
        }
        return dp[m][n];
    }
public boolean var_0 ( String var_2 , String var_3 , String var_4 ) {
  if ( var_2 == null || var_3 == null || var_2 . length ( ) + var_3 . length ( ) != var_4 . length ( ) ) {
    return false ;
  }
  int var_7 = var_2 . length ( ) ;
  int var_8 = var_3 . length ( ) ;
  boolean [ ] [ ] var_11 = new boolean [ var_7 + 1 ] [ var_8 + 1 ] ;
  for ( int var_13 = 0 ;
  var_13 <= var_7 ;
  var_13 ++ ) {
    for ( int var_14 = 0 ;
    var_14 <= var_8 ;
    var_14 ++ ) {
      if ( var_13 == 0 && var_14 == 0 ) {
        var_11 [ var_13 ] [ var_14 ] = true ;
        continue ;
      }
      var_11 [ var_13 ] [ var_14 ] = false ;
      if ( var_13 > 0 && var_2 . charAt ( var_13 - 1 ) == var_4 . charAt ( var_13 + var_14 - 1 ) ) {
        var_11 [ var_13 ] [ var_14 ] |= var_11 [ var_13 - 1 ] [ var_14 ] ;
      }
      if ( var_14 > 0 && var_3 . charAt ( var_14 - 1 ) == var_4 . charAt ( var_13 + var_14 - 1 ) ) {
        var_11 [ var_13 ] [ var_14 ] |= var_11 [ var_13 ] [ var_14 - 1 ] ;
      }
    }
  }
  return var_11 [ var_7 ] [ var_8 ] ;
}
