leetcode6: ZigZag Conversion
如题,z(反向N)字型打印
输入:”ABCDEFG” 3
A E
BDF
C G文字
输出:“AEBDFCG
模拟最通俗易懂,从样例可以看出,实际上就是遍历字符串,自上而下,当达到要求的高度再反向自下而上。将每一行的的字符串存储在同一层vector里面,最后进行拼接就得到结果
第一感觉这个题目有数学方法,但是总是得不出合理的规则。看了如下数学解法后,觉得还不如模型简便。
class Solution:
def convert(self, s, numRows):
"""
:type s: str
:type numRows: int
:rtype: str
"""
if len(s) <= numRows:
return s
dirNum = 1
indexNum = 0
strArr = []
for var in range(len(s)):
if len(strArr) < indexNum + 1:
strArr.append([])
strArr[indexNum].append(s[var])
if indexNum + 1 == numRows:
dirNum = -1
if indexNum == 0:
dirNum = 1
indexNum = indexNum + dirNum
tmpStr = ""
for var in strArr:
tmpStr = tmpStr + "".join(var)
# print(var, tmpStr)
# print(tmpStr)
return tmpStr