Z字形排列输出
package leetcode;
public class first {
public static void main(String[] args) {
String s = "A"/*"PAYPALISHIRING"*/;
int b = 1;
//a(s,b);
System.out.println(a(s,b));
}
@SuppressWarnings("unused")
public static String a(String s,int b) {
//b行,可以分为b*2-2为一个周期,总共有s.length()/(b*2-2)+s.length()%(b*2-2)
int a = 1,d = 0;
String e = "";
if(b == 1) {
return s;
}
if(s.length()%(b*2-2) == 0) {
a = 0;
}
//System.out.println(s.length());
char[][] c = new char [b][(b-1)*(s.length()/(b*2-2)+a)];
//总共有这么多个块(b-1)*(s.length()/(b*2-2)+a)按模块写入数据
for (int i = 0; i < (b-1)*(s.length()/(b*2-2)+a); i++) {
/*if(s.length() == d) {
//System.out.println(d);
break;
}*/
for (int j = 0; j < b; j++) {
//System.out.println(d);
if(s.length() == d) {
//System.out.println(d);
break;
}
c[j][i*(b-1)] = s.charAt(d);
++d;
}
for (int j = 1; j < b-1; j++) {
if(s.length() == d) {
//System.out.println(d);
break;
}
c[b-j-1][i*(b-1)+j] = s.charAt(d);
++d;
}
}
//System.out.println("-----------------");
for (int i = 0; i < b; i++) {
for (int j = 0; j < (b-1)*(s.length()/(b*2-2)+a); j++) {
if(c[i][j] != 0) {
e = e+c[i][j];
}
System.out.print(c[i][j]);
}
System.out.print('\n');
}
return e;
}
}