6. Zigzag Conversion
Tags:
Medium
Skills:
String
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Để giải bài toán này, bạn có thể mô phỏng quá trình điền các ký tự của chuỗi vào từng dòng theo hình zifgzag, sau đó ghép các dòng lại với nhau để thành chuỗi kết quả
Approach
numRows chuỗi rỗng, mỗi chuỗi đại diện cho một dòng trong zigzagcurrentRow để theo dõi dòng hiện tại và một biên goingDown để xác định hướng di chuyển (xuống hoặc lên)Edge cases
numRows là 1 hoặc chuỗi ngắn hơn số dòng, trả về chuỗi ban đầuTime and space complexity
Solution
1function convert(s: string, numRows: number): string {
2 if (numRows === 1 || s.length <= numRows) return s
3
4 let res: string[] = Array(numRows).fill('');
5 let current_row = 0;
6 let going_down = false;
7
8 for (const char of s) {
9 res[current_row] += char;
10 if (current_row === 0 || current_row === numRows - 1) {
11 going_down = !going_down;
12 }
13 current_row += going_down ? 1 : -1
14 }
15
16 return res.join('')
17};rows là mảng chứa các chuỗi cho từng dòngnumsRows - 1 , đảo hướng di chuyển