leetcode中如何解决ZigZag Conversion问题
导读:本文共1624.5字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: ZigZag ConversionThe 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 bet... ...
目录
(为您整理了一些要点),点击可以直达。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)
And then read line by line:"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
convert("PAYPALISHIRING", 3)
should return"PAHNAPLSIIGYIR"
.
题意:
锯齿形(Z字形)的变换。变换形式如下所示:
观察上面情形可知:
1)第一行和最后一行两个元素之间的距离是:(行数 - 1)* 2
2)中间几行中第一个元素与第二个元素和第二个元素与第三个元素间的距离和是:(行数 - 1)* 2.
3)中间几行中第一个元素和第二个元素间的距离与第几行的关系:(行数-第几行)* 2.
4)中间几行中第二个元素和第三个元素间的距离与第几行的关系:(第几行 - 1) * 2.
故有getIndex()函数:
1)如果是每行的第一个元素,直接返回行数。
2)如果是第一行或者最后一行的除首元素外的下标获取:前一个元素的下标 + (行数 - 1)* 2
3)中间几行的偶数列的下标获取:前一元素的下标 + (行数-第几行)* 2
4)中间几行的奇数列的下标获取(除首元素):前一元素下标 +(第几行 - 1) * 2
注:
程序中行数由于是从零开始的的,所以程序中会有相差一的出入。
逐行读取每个元素,存入rest结果集中。最后写会s,防止出现局部数组返回。
leetcode中如何解决ZigZag Conversion问题的详细内容,希望对您有所帮助,信息来源于网络。