python leetcode 6 Z 字形變換

2021-09-24 15:02:25 字數 1732 閱讀 6948

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

按照圖1的推導,就可以逐行獲取新字串對應原字串的下標

row=1是乙個特例,單獨處理:

if numrows ==1:

return s

class

solution

:def

convert

(self, s:

str, numrows:

int)

:if numrows ==1:

return s

strlen =

len(s)

res =

''for row in

range(1

, numrows +1)

: col =

0while

true

: topcol =(2

* numrows -2)

* col +

1if row !=

1and row !=numrows and col !=0:

tmpindex = topcol-row # (topcol - row + 1) - 1

if tmpindex <

len(s)

: res += s[tmpindex]

else

:break

tmpindex = topcol+row -

2# (topcol+row -1) - 1

if tmpindex < strlen:

res += s[tmpindex]

else

:break

col +=

1return res

python leetcode 最大回文數

直接暴力求解時間超出,選取manacher演算法 class solution def longestpalindrome self,s t join s 前後插入 是為了防止越界,不需要進行邊界判斷 n len t p 0 n 每一處的回文半徑 c r 0 r為當前訪問到的最右邊的值,c為此時對稱...

python LeetCode 奇偶鍊錶

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...

python LeetCode 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...