将一个给定字符串 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);
#N字形变换
s = 'SKFTGEIRGLSJGSKLFLSKSFLOGSKJ'
numRows = 4
def nmodule_number(s, numrows):
if len(s) == 1 or numrows ==1:
return s
l = [''] * numrows #得到长度为numrow的列表,里面是空字符串
i = 0
for k in s:
#将k依次放入列表中对应的索引
l[i] += k
#i到了最后一行时,又要递减了,即flag等于-1
if i == len(l)-1:
flag = -1
#i等于0时,索引递增1,flag为1
if i == 0:
flag = 1
i += flag
strs = ''
for ch in range(len(l)):
strs += ch
return strs