Zigzag { public String convert(String s, int numRows) { if (numRows < 2 || s.length() == 0) return s; char[] cs = s.toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < numRows; i++) { int span1 = 2 * numRows - 2 - 2 * i; int span2 = 2 * i; int index = i; boolean add1 = true; while (index < s.length()) { sb.append(cs[index]); if (span1 == 0) { index += span2; } else if (span2 == 0) { index += span1; } else if (add1) { index += span1; } else { index += span2; } add1 = !add1; } } return sb.toString(); }  String convert(String s, int numRows);  }
@Test(dataProvider = "zigzagArray") public void testZigzagArray(String original, int row, String expected) { assertEquals(new Zigzag().convert(original, row), expected); }