Leetcode Problem6

ZigZag Conversion

一开始看到这个题目就有点懵逼,后来看了介绍之后就感觉好多了。直观上我就想通过扫描矩阵的方式来获得结果。

比如s = "PAYPALISHIRING", numRows = 3,可以得到结果:

                                   P        A         H         N

                                   A   P   L   S    I     I    G

                                   Y         I         R

然后得到最终结果:PAHNAPLSIIGYIR。

可以想到,我们可以采用一个矩阵来储存上面的图形。行数已知,列数需要我们知道。可以发现,上面那个图形可以简单地割裂开来,比如PAYP,ALIS,HIRI三个完整的和NG一个不完整的,每个完整的部分字母的个数均为 ( numRows -1 )* 2,那么除去不完整的,列数为 len(即总长度)/ ( numRows -1 )* 2 * ( numRows -1 )。若不完整部分个数不大于numRows,则列数再加一,否则,为列数本身加上不完整部分与numRows的差再加一。

然后按照 'Z' 的规律储存就ok了。

posted @ 2018-08-02 16:45  nihwo  阅读(90)  评论(0)    收藏  举报