LeetCode6字形變換

2021-08-27 14:20:12 字數 2156 閱讀 5992

將字串"paypalishiring"以z字形排列成給定的行數:

p   a   h   n

a p l s i i g

y i r

之後從左往右,逐行讀取字元:"pahnaplsiigyir"

實現乙個將字串進行指定行數變換的函式:

string convert(string s, int numrows);
示例 1:

輸入:s = "paypalishiring", numrows = 3輸出:"pahnaplsiigyir"
示例 2:

輸入:s = "paypalishiring", numrows = 4輸出:"pinalsigyahrpi"解釋:p     i    n

a l s i g

y a h r

p i

"""方法一"""

class solution:

def convert(self, s, numrows):

""":type s: str

:type numrows: int

:rtype: str

"""if 1 == numrows:

return s

len_s = len(s)

piece_len = 2 * (numrows - 1)

result = ""

index = 0

while index < len_s:

result += s[index]

index += piece_len

for m in range(1, numrows - 1):

index = m

while index < len_s:

result += s[index]

right_index = index + (numrows - m - 1) * 2

if right_index < len_s:

result += s[right_index]

index += piece_len

index = numrows - 1

while index < len_s:

result += s[index]

index += piece_len

return result

"""方法二"""

class solution(object):

def convert(self, s, numrows):

""":type s: str

:type numrows: int

:rtype: str

"""# 若行數為1,直接輸出即可

if numrows == 1:

return s

# resultlist為結果的列表形式

resultlist =

gap = 2 * numrows - 2

# 用巢狀迴圈完成計算

for i in range(0, numrows):

temp1 = i

temp2 = gap - i

# 分兩種情況,情況1:第0行和第numrows行。temp1為主列的迴圈

if temp1 == 0 or temp1 == numrows - 1:

while temp1 < len(s):

temp1 = temp1 + gap

# 情況二:除首尾行外的其他行。temp1為主列的迴圈,temp2為插入元素的迴圈

else:

while temp1 < len(s):

temp1 = temp1 + gap

if temp2 < len(s):

temp2 = temp2 + gap

# resultst為未最終返回結果字串結果

resultstr = ''.join(resultlist)

return resultstr

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 輸入...

LeetCode 6 Z字形變換

把整個問題拆解為 儲存 取 的兩個過程 通過觀察我發現的是,當numrows為3時,兩列之間的數字的數目為1 當numrows為4時,兩列之間的數字的數目為2,以此類推。那麼,可不可以將每一列都存起來 col 兩列之間的數字也存起來 gap 最後要輸出時再通過遍歷的方式拼接出結果呢?以題目中給的字串...