美文网首页
6.ZigZag Conversion

6.ZigZag Conversion

作者: 夏臻Rock | 来源:发表于2017-12-20 16:13 被阅读0次

    将给定的一个字符串按照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;
            
        }
    }
    

    相关文章

      网友评论

          本文标题:6.ZigZag Conversion

          本文链接:https://www.haomeiwen.com/subject/wgdmwxtx.html