【算法百题之三十四】Z字形变换
大家好,我是Lampard~~
很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙!
今天的问题是:Z字形变换

思路:找规律我们可以通过2 * numRows - 2来找到同一行下一个元素(一列都是满的情况),对于除第一行和最后一行的元素还会存在打斜的元素(一列只有一个元素那种情况),我们可以通过index + rowNum - 2 * row来找到
string convert(string s, int numRows) {
int length = s.length();
if (numRows > length || numRows <= 1) {
return s;
}
string result = "";
for (int row = 0; row < numRows; row++) {
int j = row;
int rowNum = 2 * numRows - 2;
result = result + s[j];
while ((j + rowNum) < length) {
if ((row != 0 && row != numRows - 1)) {
result = result + s[j + rowNum - 2 * row];
}
result = result + s[j + rowNum];
j = j + rowNum;
}
if ((j + rowNum - 2 * row) < length && (row != 0 && row != numRows - 1)) {
result = result + s[j + rowNum - 2 * row];
}
}
return result;
测试函数以及测试结果:

OK,今天的博客就到这里,谢谢大家!!!
本文介绍了Z字形变换算法的实现思路与代码实现过程,通过观察规律,使用2*numRows-2找到同一行的下一个元素,并处理特殊行的斜向元素。

3578

被折叠的 条评论
为什么被折叠?



