class Solution {
public String convert(String s, int numRows) {
char[] c = s.toCharArray();
int len = c.length;
StringBuilder[] sb = new StringBuilder[numRows];//sb[i]表示每一行都是一个StringBuilder
for(int i=0; i<numRows; i++){
sb[i] = new StringBuilder();//sb[]中的元素也是StringBuilder类型
}
int i = 0;
while(i<len){
for(int idx=0; idx<numRows && i<len; idx++){
sb[idx].append(c[i]);//分别用sb[1],sb[2],sb[3]接收第1个-第3个数据
i++;
}
for(int idx=numRows-2; idx>0 && i<len; idx--){//z字形转换
sb[idx].append(c[i]);
i++;
}
}
for(int idx=1; idx<numRows; idx++){
sb[0].append(sb[idx]);
}
return sb[0].toString();
}
}
归纳:
1.String类型转换为char数组:char[ ] c = s.toCharArray( )
2.只有StringBuilder才能调用.append( )
3.注意两个地方StringBuilder区别,sb和sb[i]
4.最后调用toStirng( )转化为字符串
5.注意赋值方法,横向创建StringBuilder,纵向赋值