2013년 2월 7일 목요일

ZigZag Conversion

 public String convert(String s, int nRows) {
  if (nRows == 1)
   return s;

  StringBuffer[] sbs = new StringBuffer[nRows];
  for (int i = 0; i < nRows; i++) {
   sbs[i] = new StringBuffer();
  }

  int len = s.length();
  int cursor = 0;
  int cursorMax = nRows - 1;
  boolean inc = true;

  for (int i = 0; i < len; i++) {
   sbs[cursor].append(s.charAt(i));

   if (inc)
    cursor++;
   else
    cursor--;

   if (cursor == 0) {
    inc = true;
   } else if (cursor == cursorMax) {
    inc = false;
   }
  }

  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < nRows; i++) {
   sb.append(sbs[i]);
  }
  return sb.toString();
 }

댓글 없음:

댓글 쓰기