C++ 中的 Z 字形轉換
假設字串類似於 "IWANTTOLEARNCODE"。此字串以 Z 字形方式寫入給定行數 n 上。因此,模式如下所示
| I | T | A | O | |||
| W | N | O | E | R | C | D |
| A | L | N | E |
當我們像這樣讀取行時 - "ITAOWNOERCDALNE"
因此,我們必須建立一個模組,可以透過獲取字串和行數來執行此類操作。
為了解決這個問題,我們將遵循以下步驟
- 當 n = 1 時,返回 s
- 建立一個大小為 n 的字串陣列 arr
- row := 0,down := true
- 對於 i 範圍從 0 到字串大小 – 1
- 將 s[i] 插入到字串 arr[row] 的末尾
- 如果 row = b – 1,則 down := false,否則當 row= 0 時,則 down := true
- 如果 down 為真,則將 row 增加 1,否則將 row 減小 1
- ans := 空字串
- 對於 i 範圍從 0 到 n – 1
- ans := ans + arr[i]
- 返回 ans
示例(C++)
讓我們看看以下實現以更好地理解 -
#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);
}輸入
"IWANTTOLEARNCODE" 3
輸出
"ITECWNTLANOEAORD"
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP