題目:
將字串 「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...