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