DEV Community

Miss Pooja Anilkumar Patel
Miss Pooja Anilkumar Patel

Posted on

6. Leetcode Solution in Javascript

==============================================================

Description:
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 s, int numRows);

Example 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:
P I N
A L S I G
Y A H R
P I
Example 3:

Input: s = "A", numRows = 1
Output: "A"

Constraints:

1 <= s.length <= 1000
s consists of English letters (lower-case and upper-case), ',' and '.'.
1 <= numRows <= 1000

==============================================================
Solution:

let convert = function(s, numRows) {

    if (numRows === 1 || numRows > s) return s;

    let res = [];

    for (let i = 0; i < numRows; i++){

        let down = true;

        helper(down,i,numRows);

    }

    function helper (toDown,row, numberOfRows){

        if (row+1 === numberOfRows) toDown = false;

        let distance = 0;

        res.push(s[row])

        while (s[row + distance]){

            if (toDown){
                distance +=2 * (numRows - (row +1));
            }else {
                distance += 2 * ((row+1) -1);
            }
            if (s[row+distance]) res.push(s[row+distance]);

            if (row !== 0 && row !== numberOfRows -1){
                toDown = !toDown;
            }
        }
    }

    return res.join("");

};
Enter fullscreen mode Exit fullscreen mode

==============================================================

leetcode

challenge

Here is the link for the problem:
https://leetcode.com/problems/zigzag-conversion/

Top comments (0)