image.png

思路:模拟

  1. public String convert(String s, int numRows) {
  2. char[] c = s.toCharArray();
  3. int len = c.length;
  4. StringBuffer[] sb = new StringBuffer[numRows];
  5. for(int i=0;i<numRows;i++)
  6. sb[i]= new StringBuffer();
  7. int i=0; //i用来控制每一个单词
  8. while(i<len){
  9. //水平向下
  10. for(int idx=0;idx<numRows&&i<len;idx++)
  11. sb[idx].append(c[i++]);
  12. //斜向上
  13. for(int idx=numRows-2;idx>=1&&i<len;idx--)
  14. sb[idx].append(c[i++]);
  15. }
  16. //最后拼接在一起
  17. for(int idx=1;idx<numRows;idx++)
  18. sb[0].append(sb[idx]);
  19. return sb[0].toString();
  20. }