DEV Community

Debesh P.
Debesh P.

Posted on

6. Zigzag Conversion | LeetCode | Top Interview 150 | Coding Questions

Problem Link

https://leetcode.com/problems/zigzag-conversion/


Detailed Step-by-Step Explanation

https://leetcode.com/problems/zigzag-conversion/solutions/7441855/most-optimal-solution-beats-9950-shortes-76dr


leetcode 6


Solution

class Solution {
    public String convert(String s, int numRows) {

        if (numRows == 1) {
            return s;
        }

        StringBuilder ans = new StringBuilder();

        for (int i = 0; i < numRows; i++) {
            int idx = i;
            int deltaDown = 2 * (numRows - 1 - i);
            int deltaUp = 2 * i;
            boolean goingDown = true;

            while (idx < s.length()) {
                ans.append(s.charAt(idx));
                if (i == 0) {
                    idx += deltaDown;
                } else if (i == numRows - 1) {
                    idx += deltaUp;
                } else {
                    if (goingDown) {
                        idx += deltaDown;
                    } else {
                        idx += deltaUp;
                    }
                    goingDown = !goingDown;
                }
            }
        }

        return ans.toString();
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)