题目链接
题目:
分析:
- 题意如图所示:
- 如果我们按照题意, 真的实现一个矩阵, 这样做的时间和空间复杂度很高, 所以我们可以试试看找规律, 优化一下
- 我们观察他们的下标:
如果找到下标的规律, 那么我们就不用创建矩阵, 就能找到最终结果的下一个字符是什么 - 特殊情况, 当numRows = 1时, d = -1, 不符合实际情况, 所以要单独讨论
代码:
class Solution {public String convert(String s, int numRows) {
//特殊情况if (numRows == 1)return s;StringBuilder str = new StringBuilder();int d = 2 * numRows - 2;int n = s.length();
//第一行for (int i = 0; i < n; i += d) {str.append(s.charAt(i));}
//中间行 k表示行数for (int k = 1; k < numRows - 1; k++) {for (int i = k, j = d - k; i < n || j < n; i += d, j += d) {if (i < n)str.append(s.charAt(i));if (j < n)str.append(s.charAt(j));}}
//最后一行for (int i = numRows - 1; i < n; i += d) {str.append(s.charAt(i));}return str.toString();}
}