力扣 leetcode 6 z形變換 python

2021-09-24 17:19:33 字數 1612 閱讀 1461

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

直接開個二維列表模擬。

class

solution

:def

convert

(self, s:

str, numrows:

int)

->

str:

l=len(s)

if l==

1or numrows==1:

return s

lie=l//

(numrows*2-

2)*(numrows-1)

yu=l%

(numrows*2-

2)if yu<=numrows:

lie+=

1else

: lie=lie +

1+yu-numrows

ans=[[

'']*lie for _ in

range

(numrows)

] i=

0 hang,x,y=0,

0,0#print(ans)

while

(i:if hangans[hang]

[x]=s[i]

hang+=

1if hang==numrows:

x+=1 y=numrows-

2elif y!=0:

ans[y]

[x]=s[i]

y-=1 x+=

1if hang==numrows and y==0:

hang=

0 i+=

1 res=

""for ll in

range

(numrows)

:for hh in

range

(lie)

:if ans[ll]

[hh]

!=' '

: res=res+ans[ll]

[hh]

return res

力扣LeetCode 6 Z 字形變換

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedhn 請你實現這個將字串進行指定行數變換的函式 string c...

LeetCode 6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 輸入 s pa...

leetcode 6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 示例 1 輸入...