將乙個給定字串 s 根據給定的行數 numrows ,以從上往下、從左到右進行 z 字形排列。具體看原題,這裡舉乙個比較特殊的例子(兩行的之字形)
輸入:s = 「abcdefg」, numrows = 2
輸出:「acegbdf」
解釋:aceg
bdf
class
solution
:def
convert
(self, s:
str, numrows:
int)
->
str:
len_s =
len(s)
con_z =[[
none
]* len_s for _ in
range
(numrows)
]if numrows <=1:
#特殊情形,直接返回
return s
i = num = j =
0for ch in s:
ifnot j %
(numrows -1)
: con_z[i]
[j]= ch
if i < numrows -1:
i +=
1else
: i -=
1 j +=
1else
: con_z[i]
[j]= ch
num +=
1 j +=
1 i -=
1 ans =
''for i in
range
(numrows)
:for j in
range
(len_s)
:if con_z[i]
[j]:
ans += con_z[i]
[j]return ans
if __name__ ==
'__main__'
: s = solution(
) s0, numrows0 =
"paypalishiring",3
# pahnaplsiigyir
s1, numrows1 =
"paypalishiring",4
# pinalsigyahrpi
s2, numrows2 =
"paypalishiring",1
s3, numrows3 =
"abcdefg",2
# acegbdf
s4, numrows4 =
"paypalishiring",3
s5, numrows5 =
"paypalishiring",3
for i in
range(6
):ss =
eval
('s%s'
% i)
numrows =
eval
('numrows%s'
% i)
print
(s.convert(ss, numrows)
)
LeetCode 6 有效的括號
題目如下 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5...
Leetcode 6 子串行問題
給定乙個未經排序的整數陣列,找到最長且連續的的遞增序列。思路 要找乙個最長且連續,關鍵是連續,那麼只要遍歷,發現不連續就歸零,記錄最大值即可。class solution else tmp nums i max num max num index index max num return max n...
Z字型變換 LeetCode6
將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiiged...