首页 > 代码库 > leetcode6 Zigzag Conversion

leetcode6 Zigzag Conversion

题目要求:

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   N
A P L S I I G
Y   I   R

And then read line by line: "PAHNAPLSIIGYIR"

    采用坐标转换的方式来做这道题。我们现在以nRows=4来考虑,其实对于每一行,如果暂时不考虑中间的列,只考虑全满的列,则后面一个坐标都是前面的基础上加上2*(nRows-1),如0->6->12,1->7->13,2->8,3->9,因此,对于第i=0行和i=nRows行,直接按照这样的坐标转换读入,而对于中间行,每次按照这样的规律读入一个字符后,需要再追加一个字符,1->5,2->4。这个坐标转换的规律是什么呢,对于0->6,是一个nRows=4的zigzag,同理,对于1->5,2->4,则分别是nRows=3,nRows=2的zigzag,即,第i行,坐标增加的规律为前一个坐标的基础上增加2*(nRows-1-i)。

技术分享
技术分享

完整代码如下:

<script src="https://code.csdn.net/snippets/579034.js" type="text/javascript"></script>

leetcode6 Zigzag Conversion