Z字形變換

2021-08-25 08:35:32 字數 1024 閱讀 8998

題目:

將字串 「paypalishiring」 以z字形排列成給定的行數:

p a h n

a p l s i i g

y i r

之後從左往右,逐行讀取字元:」pahnaplsiigyir」

思路:

通過從左向右迭代字串,我們可以輕鬆地確定字元位於 z 字形圖案中的哪一行。

演算法 我們可以使用

min(

numrows

,len(s

))min

(numrows

,len(s

))

個列表來表示 z 字形圖案中的非空行。

從左到右迭代 s,將每個字元新增到合適的行。可以使用當前行和當前方向這兩個變數對合適的行進行跟蹤。只有當我們向上移動到最上面的行或向下移動到最下面的行時,當前方向才會發生改變。

class

solution:

defconvert

(self, s, numrows):

""" :type s: str

:type numrows: int

:rtype: str

"""if numrows==1:

return s

arr=[ for i in range(min(len(s),numrows))]

gogingdown=true

p=0for i in s:

if p==0:

gogingdown=true

if p==numrows-1:

gogingdown=false

if gogingdown==true:

p+=1

else:

p-=1

res=

for i in arr:

res.extend(i)

return

"".join(res)

Z 字形變換

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。輸入 s leetcodeishiring numrows 4 輸出 ldreoeiiecihntsg l d r e o e i i e c i h n t s g 注釋思路 class solution 有了列數和行數,總個數...

Z 字形變換

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

Z 字形變換

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