N字形變化 flag標籤轉換方向

題目:數組

將一個給定字符串根據給定的行數,以從上往下、從左到右進行 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著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索