将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。
实现步骤:
// 按Z形输出字符
public Stringconvert(String s, int num){
if (s ==null || s ==""){
return "";
}
int l = s.length();
if (l < num){
return s;
}
if (num >1){
// 根据给定行数产生拼接字符串
StringBuffer []b =new StringBuffer[num];
for (int i =0; i < num; i++) {
b[i] =new StringBuffer();
}
int i =0;
while (i < s.length()){
// 每直竖行拼接
for (int j =0; j < num && i < s.length(); j++) {
b[j] = b[j].append(s.charAt(i++));
}
// 每斜竖行拼接
for (int j = num-2; j >0 && i < s.length(); j--) {
b[j] = b[j].append(s.charAt(i++));
}
}
for (int j =1; j < num; j++) {
b[0].append(b[j]);
}
return b[0].toString();
}else {
return s;
}
}