题意
给一个行数和一个字符串,要求使用之字形将字符放到每一行上面
分析
有几行就创建一个相应大小的字符串数组,然后用一个指针指示方向进行处理,指针其实就是1或者-1,加和之后就能够在数组里面移动,指向响应行数的字符串进行处理了。
代码
class Solution {
public String convert(String s, int numRows) {
if (s == null || s.length() == 0) return "";
if (numRows == 1) return s;
String[] rows = new String[numRows];
Arrays.fill(rows,"");
int row = 0;//表示行数的指针
int pointer = 1;//表示正向
for (int i=0;i < s.length();i++) {
//1.先将当前的字符拿出来,放到row表示的行上面
char c = s.charAt(i);
rows[row] = rows[row] + c;
row = row + pointer;
//2.对行数进行调整,因为指向数组所以
if (row > numRows-1) {
row = row - 2;
pointer = -1;
} else if (row < 0) {
row = 1;//这边注意是1,不是0,否则重复打印一次了。
pointer = 1;
}
}
//最后将结果进行打印
String result = "";
for (String st : rows) {
result += st;
}
return result;
}
}