題目將一個給定字串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。 比如輸入字串為 "LEETCODEISHIRING" 行數為 3 時,排列如下:
1: 示例
2: 解析可以發現: 第一行、最後一行的每兩個字元間差值為 6 中間兩行的差值也有規律:4、2、4、2 以及 2、4、2、4 按照每一行的編號、以及總行數可以得到規律通用公式: 第一行、最後一行:step = 2 * 總行數 - 2; 中間行:(與所在行編號有關) 1 和 7 之間相差 6,7 和 13 之間相差 6 於是得到通式:index = index + step; (index 是 s 裡面的索引,剛開始 index = 當前行編號) 當然還差一個通式,就是 1 和 5 相差 4 的通式:index = index + step - 2 * 當前行編號。 接下來按照計算一個 index = index + step; 再計算一個 index = index + step - 2 * 當前行編號的順序走完中間行 原始碼
題目將一個給定字串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。 比如輸入字串為 "LEETCODEISHIRING" 行數為 3 時,排列如下:
之後,你的輸出需要從左往右逐行讀取,產生出一個新的字串,比如:"LCIRETOESIIGEDHN"。 請你實現這個將字串進行指定行數變換的函式: 示例1: 示例
2: 解析可以發現: 第一行、最後一行的每兩個字元間差值為 6 中間兩行的差值也有規律:4、2、4、2 以及 2、4、2、4 按照每一行的編號、以及總行數可以得到規律通用公式: 第一行、最後一行:step = 2 * 總行數 - 2; 中間行:(與所在行編號有關) 1 和 7 之間相差 6,7 和 13 之間相差 6 於是得到通式:index = index + step; (index 是 s 裡面的索引,剛開始 index = 當前行編號) 當然還差一個通式,就是 1 和 5 相差 4 的通式:index = index + step - 2 * 當前行編號。 接下來按照計算一個 index = index + step; 再計算一個 index = index + step - 2 * 當前行編號的順序走完中間行 原始碼