将给定的一个字符串按照Z字形排放,然后按照行输出结果字符串
题目 :
zigzag思路:
将化成的Z字形的每一行,用一个字符串记录,然后将所有的行字符串拼接得到最终的结果。
tips:
- 用一个标记来标记当前是从上往下还是从下往上,从而得到相应的行数递增还是递减.
- java.util.Arrays.fill()的使用 : 将整个数组用一个值进行填充,只适用于把数组用同一个值进行初始化。用这个方法进行数组的初始化,不然数组中为null
class Solution {
public String convert(String s, int numRows) {
int length=s.length();//字符串的长度
int row = 0;//row是行号,从零开始
int flag =1; //flag是标识,标志从上往下(行号递增)还是从下往上(行号递减)
String[] ans = new String[numRows];//用字符串数组来存放结果每一行的字符
if(numRows<=1||length ==0){return s;} //如果字符串长度为0或者行数小于等于1,则返回原始字符串
//遍历字符串,将每个字符放到相应的行字符串中
for(int i = 0;i<length;i++){
ans[row] +=s.charAt(i); //字符串拼接
row += flag;
if(row >= numRows){ //当从上往下遍历到目标行数时,变向
row = row -2;
flag = -1;
}
if(row<0){ //当从下往上遍历到第0行时,变向
row = row +2;
flag = 1;
}
}
//把上面得到的字符串数组拼接成一个字符串,然后输出
String result = ""; //初始化
for(int j = 0; j<numRows;j++){
result += ans[j];
}
return result;
}
}
网友评论