题目:给定一个字符串和行数,按照下面的方式摆放,然后按照另一种顺序输出。
翻译:
字符串“PAYPALISHIRING”通过一个给定的行数写成如下这种Z型模式:
然后一行一行的读取:“PAHNAPLSIIGYIR”
public class Main {
public static void main(String[] args) {
// write your code here
Main m = new Main();
System.out.println(m.convert("AB",1));
System.out.println(m.convert("PAYPALISHIRING",4));
}
public String convert(String s, int numRows) {
if(numRows < 2)
return s;
StringBuilder[] stringBuilder = new StringBuilder[numRows];//创建numRows个String按照顺序放到相应的桶里面
for(int i = 0;i < numRows;i++){
stringBuilder[i] = new StringBuilder();
}
int j = 0;
boolean flag = false;//用于标记放入顺序 1~numRows 或 numRows~1
for(int i = 0;i < s.length();i++){
stringBuilder[j].append(s.charAt(i));
if(i!= 0 && i%(numRows - 1) == 0){//放入顺序改变
if (flag)
flag = false;
else
flag = true;
}
if(!flag)
j++;
else
j--;
}
for(int i = 1;i < numRows;i++)
stringBuilder[0].append(stringBuilder[i]);
return stringBuilder[0].toString();
}
}