<qiyuangong>097_Interleaving_String_1.py
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
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
