Leetcode Z字形变换
Z子变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zigzag-conversion
1、行数为1和2特殊情况单独处理:
2、一个list管理n行的字符串, t和d管理插入到第几行的字符串 ,最后逐行拼接字符串
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows ==1:
return s
if numRows==2:
return s[0::2] + s[1::2]
final =["" for i in range(numRows)]
t= 0
d = 1
i = 0
max1 = numRows-2
while i<len(s):
final[t]+=s[i]
t+=d
if d==1 and t>=numRows:
t = max(numRows-2,0)
d= -1
elif d==-1 and t<1:
t = 0
d =1
i+=1
s1=''
#print(final)
for i in range(len(final)):
s1 +=final[i]
return s1

浙公网安备 33010602011771号