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