package leetcode;
public class demo_6 {
public String convert(String s, int numRows) {
//记录列号
int numCols;
String ss="";
//如果只有一行,则不是N型,所以先排除
if(numRows==1) {
return ss=s;
}
if(s.length()%(2*numRows-2)==0) {
numCols=s.length()/(2*numRows-2)*(1+numRows-2);
}
else {
numCols=(s.length()/(2*numRows-2)+1)*(1+numRows-2);
}
char [][] str=new char[numRows][numCols];
for(int i=0;i<numRows;i++) {
for(int j=0;j<numCols;j++) {
str[i][j]='0';
}
}
int row=1;
int col=0;
//判断是否需要重新开始一列
int flag=1;
str[0][0]=s.charAt(0);
for(int i=1;i<s.length();i++) {
if(flag==1&&row!=numRows-1) {
str[row][col]=s.charAt(i);
row=row+1;
continue;
}
if(flag==1&&row==numRows-1) {
str[row][col]=s.charAt(i);
flag=0;
row=row-1;
col=col+1;
continue;
}
if(flag==0&&row!=0) {
str[row][col]=s.charAt(i);
row=row-1;
col=col+1;
continue;
}
if(flag==0&&row==0) {
str[row][col]=s.charAt(i);
flag=1;
row=row+1;
continue;
}
}
for(int i=0;i<numRows;i++) {
for(int j=0;j<numCols;j++) {
if(str[i][j]!='0') {
ss=ss+str[i][j];
}
}
}
return ss;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_6 d6=new demo_6();
String s="PAYPALISHIRING";
System.out.println(d6.convert(s, 3));
}
}