6.Z字形變換

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%的用戶

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容