
chaoxi_todo.jpg
題目
將一個給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列。
比如輸入字符串為 "LEETCODEISHIRING" 行數(shù)為 3 時,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的輸出需要從左往右逐行讀取,產(chǎn)生出一個新的字符串,比如:"LCIRETOESIIGEDHN"。
請你實現(xiàn)這個將字符串進(jìn)行指定行數(shù)變換的函數(shù):
string convert(string s, int numRows);
示例 1:
輸入: s = "LEETCODEISHIRING", numRows = 3
輸出: "LCIRETOESIIGEDHN"
示例 2:
輸入: s = "LEETCODEISHIRING", numRows = 4
輸出: "LDREOEIIECIHNTSG"
解釋:
L D R
E O E I I
E C I H N
T S G
題解
思路
首先創(chuàng)建一個容器cache用來存儲循環(huán)數(shù)的大小和對應(yīng)res的位置信息
列表res用來保存結(jié)果
遍歷列表s,并向res里添加結(jié)果
def convert(self, s: str, numRows: int) -> str:
cache = [i for i in range(numRows)] + [i for i in range(1, numRows-1)][::-1]
res = [""] * numRows
for i, c in enumerate(s):
res[cache[i % len(cache)]] += c
return ''.join(res)
執(zhí)行結(jié)果:通過
顯示詳情
執(zhí)行用時 :64 ms, 在所有 Python3 提交中擊敗了73.93%的用戶
內(nèi)存消耗 :13.8 MB, 在所有 Python3 提交中擊敗了5.00%的用戶