再不刷几道算法题脑子一定是锈完了,废话不说,直接上题。
字符串"PAYPALISHIRING"
以”zigzag”形式写出,如:
P A H N
A P L S I I G
Y I R
若一行一行读,则字符串变为:"PAHNAPLSIIGYIR"
。
要求写一个给定字符串和指定行数的转换程序,例如:
convert("PAYPALISHIRING", 3)
返回"PAHNAPLSIIGYIR"
。
思路
意思比较容易理解,即将一个字符串以“Z”字型排布后,返回按行读取的字符串。
第一想法:建立一个二维数组strArray,用strArray[x][y]保存每一个字符,最后按照数组的路径读取。
草稿纸上写了伪代码就多的不要不要的,各种某个位置得挨个判断是否为空,于是换一种思路。
以输入"PAYPALISHIRING"
为例,仔细观察形式,我们可以把每个元素按照下图所示分组:
那么,按以下方式即可直接取到需求字符串:
|
|
任意字符串均可按此思路计算。
实现
按照上面的思路,利用两层循环实现算法,代码如下:
|
|
提交,Accepted!