1. 程式人生 > 其它 >【力扣第六題】-- Z字形變換(python版本)

【力扣第六題】-- Z字形變換(python版本)

技術標籤:力扣刷題

題目描述

將一個給定字串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。
比如輸入字串為 “LEETCODEISHIRING” 行數為 3 時,排列如下:
在這裡插入圖片描述
之後,你的輸出需要從左往右逐行讀取,產生出一個新的字串,
比如:“LCIRETOESIIGEDHN”

思路解析

字串 s 是以 Z 字形為順序儲存的字串,按順序遍歷字串 s 時,每個字元 c 在 Z 字形中對應的行索引先增大再減小
解決思路: 模擬這個行索引的變化在遍歷 s 中每個字元時,把每個字元填到正確的行 res[i] 中,最後再按行拼接字元

具體程式碼

def convert(s,
numRows): # 若行數為1時,可直接輸出 if numRows < 2: return s # 初始化為numRows個空字串,用於存放從左往右逐行讀取的字元 res = ['' for _ in range(numRows)] # i為字元的下標,從0開始 i = 0 # flag用於轉向方向,當遇到Z字的轉折處時,翻轉方向 flag = -1 for c in s: res[i] += c # 當遇到Z字的轉折處時,翻轉方向 if i == 0 or
i == numRows - 1: flag = - flag i += flag return ''.join(res) def main(): s = str(input()) num = int(input()) res = convert(s, num) print(res) main()