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"

更新於: 2020-04-27

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.