Leetcode ZigZag Conversion Java Solution

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

Solution:

class HackerHeap {
    public String convert(String s, int numRows) {
		if(s.isEmpty() || numRows == 0 || numRows == 1)
			return s;
        String[] collector = new String[numRows];
        int c = 0;
        int subC = 0;
        while(c < s.length()) {
        	int idx = Math.abs(subC);
        	if(collector[idx] == null)
        		collector[idx] = String.valueOf(s.charAt(c));
        	else
        		collector[idx] = collector[idx]+s.charAt(c);
        	c++;
        	if(subC == numRows-1)
        		subC *= -1;
        	subC++;
        }
        
        StringBuilder result = new StringBuilder();
        
        for(int i = 0; i < numRows; i++) {
        	if(collector[i] != null)
        		result.append(collector[i]);
        }
        
		return result.toString();
    }
}