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

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();
}
}
Top comments (0)