# 将一个给定字符串s根据给定的行数numRows ,以从上往下、从左到右进行Z字形排列。
# 比如输入字符串为 "PAYPALISHIRING"行数为3时,排列如下:
# 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
#
# 示例 3:
# 输入:s = "A", numRows = 1
# 输出:"A"
class Solution(object):
def convert(self, s, numRows):
"""
:type s: str
:type numRows: int
:rtype: str
"""
if numRows == 1:
return s
num = len(s)
lis = ['' for j in range(numRows)]
a, b = 0, -1
for i in range(num):
lis[a] += s[i]
if a == 0 or a == numRows - 1:
b = -b
a += b
c = ''
for j in lis:
c += j
return c
if __name__ == '__main__':
solution = Solution
num = solution.convert(solution, s="PAYPALISHIRING", numRows=3)
print(num)
num = solution.convert(solution, s="PAYPALISHIRING", numRows=4)
print(num)
num = solution.convert(solution, s="A", numRows=1)
print(num)