标签:
思路:String[numRow]行字符串数组。读取原始字符串每一个字符,设置行变量 nrow和行标志位flag(向下一行为1或向上一行为-1)。将该字符连接到数组中对应的行字符串,同时nrow+=flag。
1 public String convert(String s, int numRows) { 2 if(s==null||s.length()==0||numRows<=1){ 3 return s; 4 } 5 String[] strRowArr=new String[numRows]; 6 Arrays.fill(strRowArr, ""); 7 int flag=1; //向下走为1,向上走位-1 8 int nrow=0; //当前字符应该在的行 9 for(int i=0;i<s.length();i++){ 10 char t=s.charAt(i); 11 strRowArr[nrow]+=t; 12 nrow+=flag; 13 if(nrow>=numRows){ 14 //nrow已经越下界,更新为倒数第二行,标志flag也变为-1 15 nrow=(numRows-1)-1; 16 flag=-1; 17 } 18 if(nrow<0){ 19 //nrow已经越上界,更新为第二行,标志位flag变为1 20 nrow=1; 21 flag=1; 22 } 23 } 24 //行字符串数组 拼接成一个完整的字符串 25 String rowString=""; 26 for(String str:strRowArr){ 27 rowString+=str; 28 } 29 return rowString; 30 }
【Leetcode-easy】ZigZag Conversion
标签:
原文地址:http://www.cnblogs.com/scecit/p/4967751.html