leetcode ZigZag conversion(mediium) /java

 

这个题目很简单。

需要注意的是,边界处理。和数据测试时考虑到特殊情况。

开头加了两行代码处理特殊情况。

  1 /**
  2 * zigzag
  3 * 2017-5-8
  4 **/
  5 
  6 import java.io.*;
  7 import java.util.*;
  8 import java.lang.*;
  9 
 10 public class Solution
 11 {
 12     public static String convert(String s, int numRows)
 13     {
 14 
 15         String r=new String("");
 16         if(s==null||s.length()<=0)
 17             return r;
 18         if(numRows==1)
 19             return s;
 20         int len=s.length();
 21         int t=2*numRows-2;
 22         //System.out.println("t--"+t);
 23         int c=(numRows-1)*(len/t+1);
 24         //System.out.println("len--"+len);
 25         //System.out.println("c--"+c);
 26         char[][] ch=new char[numRows][c];
 27         int i=0,j=0,k=0;
 28         char[] ss=s.toCharArray();
 29         for(j=0;j<numRows;j++)
 30         {
 31             for(k=0;k<c;k++)
 32             {
 33                 ch[j][k]='0';
 34             }
 35         }
 36         j=0;
 37         k=0;
 38         for(i=0;i<len;i++)
 39         {
 40             ch[j][k]=ss[i];
 41             //System.out.println(j+"--"+k+"--"+ch[j][k]);
 42             if(j<numRows-1&&(k%(numRows-1)==0))
 43             {
 44                 j++;
 45                 continue;
 46             }
 47             if(j==numRows-1&&(k%(numRows-1)==0))
 48             {
 49                 j--;
 50                 k++;
 51                 continue;
 52             }
 53             if(j>0&&(k%(numRows-1)!=0))
 54             {
 55                 j--;
 56                 k++;
 57                 continue;
 58             }
 59             if(j==0&&(k%(numRows-1)!=0))
 60             {
 61                 j++;
 62                 continue;
 63             }
 64         }/*
 65         for(j=0;j<numRows;j++)
 66         {
 67             for(k=0;k<c;k++)
 68             {
 69                 System.out.print(ch[j][k]);
 70             }
 71             System.out.println();
 72         }
 73         */
 74         char[] ch1=new char[len];
 75         i=0;
 76         for(j=0;j<numRows;j++)
 77         {
 78             for(k=0;k<c;k++)
 79             {
 80                 if(ch[j][k]!='0')
 81                 {
 82                     ch1[i]=ch[j][k];
 83                     i++;
 84                 }
 85 
 86             }
 87         }
 88         r=String.valueOf(ch1);
 89         return r;
 90     }
 91     public static void main(String[] args)
 92     {
 93 
 94         while(true)
 95         {
 96             Scanner input=new Scanner(System.in);
 97             String s=input.nextLine();
 98             int numRows=input.nextInt();
 99             System.out.println(convert(s,numRows));
100         }
101 
102     }
103 
104 }
View Code

 

posted @ 2017-05-08 10:10  天气晚来秋  阅读(153)  评论(0编辑  收藏  举报