forked from qiyuangong/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path097_Interleaving_String.py
32 lines (32 loc) · 966 Bytes
/
097_Interleaving_String.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution(object):
def isInterleave(self, s1, s2, s3):
"""
:type s1: str
:type s2: str
:type s3: str
:rtype: bool
"""
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