Skip to content

Commit 0b03a53

Browse files
committedSep 13, 2024·
re-solve "6. Zigzag Conversion"
1 parent 09c6d43 commit 0b03a53

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed
 

‎.plan

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Sep 13, 2024
2+
3+
* re-solve "6. Zigzag Conversion"
4+
15
Sep 12, 2024
26

37
* re-solve "14. Longest Common Prefix"

‎src/zigzag_conversion.py

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,28 @@
11
class Solution:
22
def convert(self, s: str, num_rows: int) -> str:
3-
if num_rows <= 1:
3+
if num_rows == 1:
44
return s
55

6-
result = []
6+
n = len(s)
7+
result: list[str] = []
78

8-
first, second = num_rows * 2 - 2, 0
9-
10-
start = 0
11-
while start < num_rows and start < len(s):
12-
i = start
9+
step = (num_rows - 1) * 2
1310

11+
# first row
12+
for i in range(0, n, step):
1413
result.append(s[i])
1514

16-
while True:
17-
i += first
18-
19-
if first and i < len(s):
20-
result.append(s[i])
21-
22-
i += second
15+
# middle rows
16+
for r in range(1, num_rows - 1):
17+
for i in range(r, n, step):
18+
result.append(s[i])
2319

24-
if second and i < len(s):
25-
result.append(s[i])
20+
j = i + (step - r * 2)
21+
if j < n:
22+
result.append(s[j])
2623

27-
if i >= len(s):
28-
break
29-
30-
start += 1
31-
first -= 2
32-
second += 2
24+
# last row
25+
for i in range(num_rows - 1, n, step):
26+
result.append(s[i])
3327

3428
return "".join(result)

0 commit comments

Comments
 (0)