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 RAnd 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 "PAHNAPLSIIGYIR"
.
class Solution:
# @return a string
def convert(self, s, nRows):
if nRows == 0 : return None
if nRows == 1 : return s
res = ''
index = 0; step = 1
for i in range(nRows) :
if i == 0 or i == nRows - 1 :
step = 2 * nRows - 2
index = i
while index < len(s) :
res = res + s[index]
index = index + step
else :
index = i
flag = True
step1 = 2 * (nRows - 1 - i )
step2 = 2 * i
while index < len(s):
res = res + s[index]
if flag :
index = index + step1
else :
index = index + step2
flag = not flag
return res