6. ZigZag Conversion Leetcode Python
The string "PAYPALISHIRING"is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N
A P L S I I G
Y I R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPL
SIIGYIR".
この問題の主な特徴は、新しいシーケンスの位置が2*nRows-2であることを観察することです.
コードは次のとおりです.
P A H N
A P L S I I G
Y I R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPL
SIIGYIR".
この問題の主な特徴は、新しいシーケンスの位置が2*nRows-2であることを観察することです.
コードは次のとおりです.
class Solution:
# @return a string
def convert(self, s, nRows):
if nRows==1:
return s
if len(s)<=1:
return s
n=nRows
size=2*n-2
result=[]
for i in range(n):
j=i
while j<len(s):
result.append(s[j])
if i!=0 and i!=n-1 and j+size-2*i<len(s):
result.append(s[j+size-2*i])
j+=size
return "".join(result)