给一个Z字形的字符串“PAYPALISHIRING”如下
P A H N A P L S I I G Y I R
然后你应该横向输出PAHNAPLSIIgYIR
Example 1:
输入: s = "PAYPALISHIRING", numRows = 3 输出: "PAHNAPLSIIGYIR"
Example 2:
输入: s = "PAYPALISHIRING", numRows = 4 输出: "PINALSIGYAHRPI" Z字形: P I N A L S I G Y A H R P I
给你一个字符串和行数,横向输出
代码:构造一个StringBuilder数组,每个保存当行的信息,从上到下(纵向),从下到上(斜向)一次保存
public String convert(String s, int numRows) {
if(numRows==1||numRows>=s.length())
return s;
StringBuffer[] sb=new StringBuffer[numRows];
int index=0;
for(int j=0;j<numRows;j++)
sb[j]=new StringBuffer();
while(index<s.length()){
for(int i=0;i<numRows&&index<s.length();i++)
sb[i].append(s.charAt(index++));
// System.out.println(i+"======="+index);
for(int j=numRows-2;index<s.length()&&j>=1;j--)
sb[j].append(s.charAt(index++));
}
for(int k=1;k<numRows;k++)
sb[0].append(sb[k]);
return sb[0].toString();
}