leetcode Z字形變換

2021-09-24 19:20:17 字數 1473 閱讀 5726

將乙個給定字串根據給定的行數,以從上往下、從左到右進行 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);

示例 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

一開始一直陷入思維誤區,想著怎麼避開空格,尋找元素串與原始串的關係。

後來看了其他同學的討論才知道完全不用管空格,只需要按行增加元素,最後按行輸出即可。

如下:123456789 10 11 12 13 14 15 16

1              7              13

2        6    8        12  14

3   5         9     11      15

4              10              16

按行增加元素

第1行:1

第二行:2

第三行:3

第四行:4

第3行:5

第二行:6

第1行:7

第二行:8

第三行:9

第四行:10

以此類推:

第一行:1,7,13

第二行:2,6,8,12,14

第三行:3,5,9,11,15

第四行:4,10,16

**如下:

def convert(self, s: str, numrows: int) -> str:

ans=['']*numrows

flag=false

rows=0

if numrows<=1 or s=='':

return s

for item in s:

ans[rows]+=item

if rows==0 or rows==numrows-1:

flag=not flag

if flag:

rows+=1

else:

rows-=1

return ''.join(ans)

leetcode Z字形變換

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedhn 請你實現這個將字串進行指定行數變換的函式 string c...

LeetCode Z字形變換

繼續刷題 題目 z字形變換 將乙個給定字串根據給定的行數,以從上往下,從左往右進行z字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n之後,你的輸出需要從左往右逐行讀取,產生乙個新的字串,比如 lcir...

leetcode Z 字形變換

將乙個給定字串 s 根據給定的行數 numrows 以從上往下 從左到右進行 z 字形排列。比如輸入字串為 paypalishiring 行數為 3 時,排列如下 p a h n a p l s i i g y i r 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 pahnaplsi...