File tree Expand file tree Collapse file tree 1 file changed +22
-20
lines changed Expand file tree Collapse file tree 1 file changed +22
-20
lines changed Original file line number Diff line number Diff line change 1
1
class Solution :
2
2
def alienOrder (self , words : List [str ]) -> str :
3
- adj = {char : set () for word in words for char in word }
3
+ adj = { c : set () for w in words for c in w }
4
4
5
5
for i in range (len (words ) - 1 ):
6
6
w1 , w2 = words [i ], words [i + 1 ]
7
7
minLen = min (len (w1 ), len (w2 ))
8
+
8
9
if len (w1 ) > len (w2 ) and w1 [:minLen ] == w2 [:minLen ]:
9
10
return ""
11
+
10
12
for j in range (minLen ):
11
- if w1 [j ] != w2 [j ]:
12
- print (w1 [j ], w2 [j ])
13
- adj [w1 [j ]].add (w2 [j ])
13
+ w1 [j ] != w2 [j ]:
14
+ adj [w1 [j ]].add (w2 [j ]]
14
15
break
15
16
16
- visited = {} # {char: bool} False visited, True current path
17
- res = []
17
+ visit = {} # False= visited, True= current path
18
+ res = []
18
19
19
- def dfs (char ):
20
- if char in visited :
21
- return visited [char ]
20
+ def dfs (c ):
21
+ if c in visit :
22
+ return visit [c ]
23
+
24
+ visit [c ] = True
22
25
23
- visited [char ] = True
26
+ for nei in adj [c ]:
27
+ if dfs (nei ):
28
+ return True
24
29
25
- for neighChar in adj [char ]:
26
- if dfs (neighChar ):
27
- return True
30
+ visit [c ] = False
31
+ res .append (c )
28
32
29
- visited [char ] = False
30
- res .append (char )
33
+ for c in adj :
34
+ if dfs (c ):
35
+ return ""
31
36
32
- for char in adj :
33
- if dfs (char ):
34
- return ""
37
+ return "" .join (res )
35
38
36
- res .reverse ()
37
- return "" .join (res )
39
+
You can’t perform that action at this time.
0 commit comments