leetcode 6: Z字形变换
Posted 不想取名字所以就随便写了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 6: Z字形变换相关的知识,希望对你有一定的参考价值。
将字符串 "PAYPALISHIRING"
以Z字形排列成给定的行数:
P A H N A P L S I I G Y I R
之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"
实现一个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "PAYPALISHIRING", numRows = 3 输出: "PAHNAPLSIIGYIR"
示例 2:
输入: s = "PAYPALISHIRING", numRows = 4 输出: "PINALSIGYAHRPI" 解释: P I N A L S I G Y A H R P I
解析:首先将例子以下标的形式展现如下
0 6 12
1 5 7 11 13
2 4 8 10
3 9
这样一来就可以很容易看出每一行相邻两元素的间距
6 0
4 2
2 4
0 6
至此规律已经很明显了, 这里需要注意第一行跟最后一行中表面上看貌似所有元素间距就只有6, 实际上我们可以假设有一个隐藏元素, 其与前一元素间距0, 也就是同一元素, 这样规律才更清晰
1 string convert(string s, int numRows) { 2 if(numRows == 1) 3 return s; 4 char *res = new char[s.size()+1]; 5 res[s.size()] = ‘