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