leetcode 6 題解及思路

2021-10-17 21:27:33 字數 1720 閱讀 3578

將乙個給定字串 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...