將一個給定字符串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。
比如輸入字符串爲 “LEETCODEISHIRING” 行數爲 3 時,排列如下:
L C I R
E T O E S I I G
E D H N
之後,你的輸出需要從左往右逐行讀取,產生出一個新的字符串,比如:“LCIRETOESIIGEDHN”。
請你實現這個將字符串進行指定行數變換的函數:
string convert(string s, int numRows);
————————————————
解題思路:基於numRows建立numRows個空字符串,按照題目要求的排列順序分別將字符添加到對應的字符串中。
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows<2:
return s
strs = ["" for _ in range(numRows)] # 建立numRows個空字符串
i, flag = 0, -1 # i爲字符串位置,flag是用於遍歷的標誌符號
for c in s: # 遍歷字符串
strs[i] += c
if i == 0 or i == numRows - 1: flag = -flag # 當遍歷到兩端的字符串的時候則改變falg的值
i += flag
return ''.join(strs) # 進行拼接