美文网首页
leetcode #6 ZigZag Conversion

leetcode #6 ZigZag Conversion

作者: huntriver | 来源:发表于2017-07-05 13:19 被阅读0次

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

    P   A   H   N
    A P L S I I G
    Y   I   R
    

    And then read line by line: "PAHNAPLSIIGYIR"
    Write the code that will take a string and make this conversion given a number of rows:

    string convert(string text, int nRows);
    

    convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

    • 题目大意
      ZigZag 是锯齿形的意思。 给你一个按锯齿顺序的字符串,将其转化成正常顺序的(从左到右 从上到下)。
      锯齿顺序就是指 第一列是从上到下 接着第二列就是从下到上,并且第二列会少头和尾两个字符,以此类推。

    理解了题目意思就非常简单了,我们只需要模拟锯齿的过程就可以了。

    /**
     * @param {string} s
     * @param {number} numRows
     * @return {string}
     */
    var convert = function (s, numRows) {
        let i = 0;
        let rows = new Array(numRows); //为每一行建立一个字符串
        rows.fill("");
    
        while (i < s.length) {
            for (let r = 0; r < numRows && i < s.length; r++) { //第一列 从上到下
                rows[r] += s[i++];
            }
            for (let r = numRows - 2; i < s.length && r >= 1; r--) { //第二列 从下到上
                rows[r] += s[i++];
            }
        }
        return rows.join(""); //将所有行连起来
    };
    

    相关文章

      网友评论

          本文标题:leetcode #6 ZigZag Conversion

          本文链接:https://www.haomeiwen.com/subject/svqqhxtx.html