題目鏈接
題目:
分析:
- 題意如圖所示:
- 如果我們按照題意, 真的實現一個矩陣, 這樣做的時間和空間復雜度很高, 所以我們可以試試看找規律, 優化一下
- 我們觀察他們的下標:
如果找到下標的規律, 那么我們就不用創建矩陣, 就能找到最終結果的下一個字符是什么 - 特殊情況, 當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();}
}