package t1_50;
public class t6 {
/**
* 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
* <p>
* 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
* <p>
* P A H N
* A P L S I I G
* Y I R
*/
public static void main(String[] args) {
String paypalishiring = convert("PAYPALISHIRING",4);
System.out.println(paypalishiring);
}
public static String convert(String s, int numRows) {
int length =s.length();
if (length<=numRows||length==1) return s;
StringBuffer[] results =new StringBuffer[numRows+1];
for (int i = 0; i <=numRows ; i++) {
results[i] = new StringBuffer();
}
boolean flag=true;
//当前第一行
int curRow=1;
for (int i = 0; i <length ; i++) {
results[curRow].append(s.charAt(i));
if (flag){
curRow++;
}else{
curRow--;
}
if (curRow==1||curRow==numRows) flag=!flag;
}
for (int i = 0; i <= numRows; i++) {
results[0].append(results[i].toString());
}
return results[0].toString();
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交