題目:數組
將一個給定字符串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。網絡
好比輸入字符串爲 "LEETCODEISHIRING" 行數爲 3 時,排列以下:函數
L C I R
E T O E S I I G
E D H N
以後,你的輸出須要從左往右逐行讀取,產生出一個新的字符串,好比:"LCIRETOESIIGEDHN"。spa
請你實現這個將字符串進行指定行數變換的函數:code
string convert(string s, int numRows);
示例 1:blog
輸入: s = "LEETCODEISHIRING", numRows = 3
輸出: "LCIRETOESIIGEDHN"
示例 2:索引
輸入: s = "LEETCODEISHIRING", numRows = 4
輸出: "LDREOEIIECIHNTSG"
解釋:leetcode
L D R
E O E I I
E C I H N
T S G字符串
/** * @param {string} s * @param {number} numRows * @return {string} */ var convert = function(s, numRows) { if(numRows<2){ return s; } let str = new Array(); for(let i=0;i<numRows;i++){ str[i] = ""; } let index =0; let flag = -1; let j=0; while(index<s.length){ str[j]+= s[index];//將j相同的數據鏈接到同一個元素中 index ++; if(j==0|| j==numRows-1){ flag = -flag; } j +=flag;//將數據進行反向,也就是s[index]中元素下一次應該鏈接到的元素索引值 } return str.join("") };
實現方式:主要是經過一個flag轉換方向以及利用數組,將字符串遍歷放到對應的數組之中,最後將數組進行合併get
L | C | I | R | ||||
E | T | O | E | S | I | I | G |
E | D | H | N |
能夠看出其是一行一行的輸出,即將行索引相同的元素放置在同一個字符串中進行鏈接,最後將整個數組鏈接就能夠了。
來源:https://leetcode-cn.com/problems/zigzag-conversion/solution/zzi-xing-bian-huan-by-jyd/
來源:力扣(LeetCode)連接:https://leetcode-cn.com/problems/zigzag-conversion著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。