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"