Giả sử chuỗi giống như "IWANTTOLEARNCODE". Chuỗi này được viết theo đường ngoằn ngoèo trên một số hàng nhất định nói n. Vì vậy, mẫu trông như thế này
Tôi | | T | | A | | O |
W | N | O | E | R | C | D |
A | | L | | N | | E |
Khi chúng tôi đọc dòng như - "ITAOWNOERCDALNE"
Vì vậy, chúng tôi phải tạo một mô-đun có thể thực hiện loại hoạt động này bằng cách lấy chuỗi và số hàng.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau
- khi n =1, sau đó trả về s
- tạo một mảng chuỗi arr có kích thước n
- row:=0 và down:=true
- cho tôi trong phạm vi từ 0 đến kích thước của chuỗi - 1
- chèn s [i] vào cuối chuỗi arr [row]
- nếu row =b - 1 thì xuống:=false, ngược lại khi row =0 thì xuống:=true
- nếu giảm là đúng, thì hãy tăng hàng lên 1, nếu không thì giảm hàng xuống 1
- ans:=chuỗi trống
- cho tôi trong phạm vi từ 0 đến n - 1:
- ans:=ans + arr [i]
- trả lại ans
Ví dụ (C ++)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <bits/stdc++.h> using namespace std; class Solution { public: string convert(string s, int numRows); }; string Solution::convert(string a, int b) { if(b == 1)return a; string arr[b]; int row = 0; bool down = true; for(int i = 0; i < a.size(); i++){ arr[row].push_back(a[i]); if(row == b - 1) down = false; else if(row == 0)down = true; if(down) row++; else row--; } string ans = ""; for(int i = 0; i < b; i++){ ans += arr[i]; } return ans; } main(){ Solution ob; cout << ob.convert("IWANTTOLEARNCODE", 3); }
Đầu vào
"IWANTTOLEARNCODE" 3
Đầu ra
"ITECWNTLANOEAORD"