comefrom: <awangdev>Interleaving String_2.java
code: 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[2][n + 1];
          int curr = 0;
          int prev = 0;
          
          for (int i = 0; i <= m; i++) {
              prev = curr;
              curr = 1 - prev;
  
              for (int j = 0; j <= n; j++) {
                  if (i == 0 && j == 0) { 
                      dp[curr][j] = true;
                      continue;
                  }
                  
                  dp[curr][j] = false;
                  if (i > 0 && s1.charAt(i - 1) == s3.charAt(i + j - 1)) {
                      dp[curr][j] |= dp[prev][j];
                  } 
                  
                  if (j > 0 && s2.charAt(j - 1) == s3.charAt(i + j - 1)) {
                      dp[curr][j] |= dp[curr][j - 1];
                  }
              }
          }
          return dp[curr][n];
      }
masked: 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_12 = new boolean [ 2 ] [ var_8 + 1 ] ;
    int var_14 = 0 ;
    int var_15 = 0 ;
    for ( int var_16 = 0 ;
    var_16 <= var_7 ;
    var_16 ++ ) {
      var_15 = var_14 ;
      var_14 = 1 - var_15 ;
      for ( int var_17 = 0 ;
      var_17 <= var_8 ;
      var_17 ++ ) {
        if ( var_16 == 0 && var_17 == 0 ) {
          var_12 [ var_14 ] [ var_17 ] = true ;
          continue ;
        }
        var_12 [ var_14 ] [ var_17 ] = false ;
        if ( var_16 > 0 && var_2 . charAt ( var_16 - 1 ) == var_4 . charAt ( var_16 + var_17 - 1 ) ) {
          var_12 [ var_14 ] [ var_17 ] |= var_12 [ var_15 ] [ var_17 ] ;
        }
        if ( var_17 > 0 && var_3 . charAt ( var_17 - 1 ) == var_4 . charAt ( var_16 + var_17 - 1 ) ) {
          var_12 [ var_14 ] [ var_17 ] |= var_12 [ var_14 ] [ var_17 - 1 ] ;
        }
      }
    }
    return var_12 [ var_14 ] [ var_8 ] ;
  }
  