思想:
遍历输入字符串的字符,以 numRows+(numRows-2) 为一个cycle周期。
当字符下标 i 除以 cycle 得到的余数>=numRows时,为ZigZag形状的反方向部分,此时
行数 = (numRows-1)-(numRows-余数+1)
= 2*numRows-2-remainder
= cycle-remainder
当<numRows时,为正方向部分,此时
行数 = 余数
遇到的问题:
1. 特殊情况:当numRows == 1时,cycle可能出现等于0的情况,不能做除数。
2. 最后要求返回字符串,使用栈的话最后需要执行stack.pop( ),没有直接处理String字符串快。常用方法总结:
字符串拼接(或字符串+字符):
String= String + String
或
String = String + char
当字符串需要修改时,使用StringBuffer和StringBuilder比String快,且不产生新的未使用对象。其中,StringBuilder更有速度优势,但是不是线程安全的。字符串拼接采用
stringbuilder/stringbuffer.append(char/String);