comefrom: <qiyuangong>097_Interleaving_String_1.py
code: def isInterleave( s1, s2, s3):
      if len(s1) + len(s2) != len(s3):
          return False
      queue = [(0, 0), (-1, -1)]
      visited = set()
      isSuccess = False
      index = 0
      while len(queue) != 1 or queue[0][0] != -1:
          p = queue.pop(0)
          if p[0] == len(s1) and p[1] == len(s2):
              return True
          if p[0] == -1:
              queue.append(p)
              index += 1
              continue
          if p in visited:
              continue
          visited.add(p)
          if p[0] < len(s1):
              if s1[p[0]] == s3[index]:
                  queue.append((p[0] + 1, p[1]))
          if p[1] < len(s2):
              if s2[p[1]] == s3[index]:
                  queue.append((p[0], p[1] + 1))
      return False
masked: def sample_funcname ( var_0 , var_1 , var_2 ) :
      if len ( var_0 ) + len ( var_1 ) != len ( var_2 ) :
          return False
      var_7 = [ ( 0 , 0 ) , ( - 1 , - 1 ) ]
      var_9 = set ( )
      var_10 = False
      var_11 = 0
      while len ( var_7 ) != 1 or var_7 [ 0 ] [ 0 ] != - 1 :
          var_13 = var_7.pop ( 0 )
          if var_13 [ 0 ] == len ( var_0 ) and var_13 [ 1 ] == len ( var_1 ) :
              return True
          if var_13 [ 0 ] == - 1 :
              var_7.append ( var_13 )
              var_11 += 1
              continue
          if var_13 in var_9 :
              continue
          var_9.add ( var_13 )
          if var_13 [ 0 ] < len ( var_0 ) :
              if var_0 [ var_13 [ 0 ] ] == var_2 [ var_11 ] :
                  var_7.append ( ( var_13 [ 0 ] + 1 , var_13 [ 1 ] ) )
          if var_13 [ 1 ] < len ( var_1 ) :
              if var_1 [ var_13 [ 1 ] ] == var_2 [ var_11 ] :
                  var_7.append ( ( var_13 [ 0 ] , var_13 [ 1 ] + 1 ) )
      return False
  