题目:
例如给定字符串和行数String s="PAYPALISHIRING" 和nRows == 3;
P A H N
A P L S I I G
Y I R
return"PAHNAPLSIIGYIR".
这题里包含的关于String[] str=new Srting[1];字符串数组的一个小知识点。
所以这道题中的String[]str 用Arrays.fill(str,"")赋了初值。
public static void main(String[] args)
{
String[] strs=new String[1];
System.out.println(strs[0]);//当不对strs中元素赋值时,能打印出null;
//System.out.println(""+strs[0].charAt(0));//这样打不出字符'n',原因是NullPointerException;
strs[0]+="a";//但是进行字符串连接操作后打印出“nulla”,并且"nulla"竟然成为strs[0]的字符串
System.out.println(""+strs[0].charAt(0));//打印出'n';
System.out.println(""+strs[0].length());//length为5;
System.out.println(strs[0]);//字符串为nulla;
}
public String convert(String s, int nRows) {
if(s == null || s.length()<=1||nRows == 1)
return s;
String[]strs=new String[nRows];
Arrays.fill(strs,"");
int row=0;
int troop=1;//向上或者向下走的步数;
for(int i=0;i<s.length();i++)
{
strs[row]+=s.charAt(i);
row+=troop;
if(row == nRows)
{
row=nRows-2;
troop=-1;
}
else if(row == -1)
{
row=1;
troop=1;
}
}
StringBuilder sb=new StringBuilder();
for(int i=0;i<nRows;i++)
{
sb.append(strs[i]);
}
return sb.toString();
}