File tree 1 file changed +59
-0
lines changed
1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
1
+ from collections import defaultdict
2
+
3
+ class Solution :
4
+ def convert (self , s : str , numRows : int ) -> str :
5
+ if s == '' or numRows == 1 :
6
+ return s
7
+ len_str = len (s )
8
+ base = 2 * (numRows - 1 )
9
+ nums = len_str // base
10
+ base_ind = [x for x in range (numRows )]
11
+
12
+ minis = len_str % base
13
+ print (nums )
14
+ print (base_ind )
15
+ print (base )
16
+ print (minis )
17
+ arr = defaultdict (list )
18
+ for i in range (nums ):
19
+ for j in base_ind :
20
+ if j in [base_ind [- 1 ], base_ind [0 ]]:
21
+ arr [j ].append (j + base * i )
22
+ else :
23
+ arr [j ].extend ([j + base * i , j + base * (i + 1 )- 2 * j ])
24
+
25
+ flag = nums * base
26
+ if minis != 0 :
27
+ if minis // numRows == 0 :
28
+ for i in range (0 , minis ):
29
+ arr [i ].append (flag + i )
30
+ else :
31
+ for i in range (0 , numRows ):
32
+ arr [i ].append (flag + i )
33
+ for i , val in enumerate (range (flag + numRows , len_str ), 1 ):
34
+ arr [numRows - i - 1 ].append (val )
35
+ print (val )
36
+
37
+ arr_str = defaultdict (list )
38
+ for k in arr .keys ():
39
+ for i in arr [k ]:
40
+ arr_str [k ].append (s [i ])
41
+
42
+ return '' .join (['' .join (val ) for val in arr_str .values ()])
43
+
44
+
45
+
46
+ if __name__ == "__main__" :
47
+ solution = Solution ()
48
+ string = 'LEETCODEISHIRING'
49
+ numRows = 4
50
+ # result = 'LCIRETOESIIGEDHN'
51
+
52
+ '''
53
+ string = 'LEETCODEISHIRING'
54
+ numRows = 3
55
+ # result = 'LDREOEIIECIHNTSG'
56
+ '''
57
+ result = solution .convert (string , numRows )
58
+
59
+ print (result )
You can’t perform that action at this time.
0 commit comments