將乙個給定字串根據給定的行數,以從上往下、從左到右進行 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
這個題就是乙個找規律的題,每一行的字母索引都是按步可找的。所以找一下規律先,其實看示例2,第一行就是每個元素之間都差2*numrows-2,最後一行也是這樣,中間的兩行一部分元素是這樣,還有一部分元素與行數有關。所以程式就可以直接編寫了:
c++源**:
class
solution
}return str;}}
;
python3源**:
class
solution
:def
convert
(self, s, numrows)
:"""
:type s: str
:type numrows: int
:rtype: str
"""if numrows==1:
return s
ns =
"" n =
len(s)
step =
2* numrows -
2for i in
range
(numrows)
:for j in
range
(i, n, step)
: ns += s[j]
if i!=
0and i!=numrows-
1and j+step-
2*ins += s[j+step-
2*i]
return ns
6 Z 字形變換 leetcode
將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedh...
6 Z字形轉換
將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedhn 請你實現這個將字串進行指定行數變換的函式 string c...
6 Z字形變換 Leetcode刷題 C
我自己的做法是將對於z字形排列的每一行,遍歷字串,然後根據下標與numrows的關係加到result字串中,這樣空間複雜度為o 1 但是這樣時間複雜度是o m n class solution return result 結果 執行用時 100 ms,在所有 c 提交中擊敗了7 的使用者 記憶體消耗...