leecode---06---字符串,之字形---使用之字形打印一个字符串

 
 
题意
给一个行数和一个字符串,要求使用之字形将字符放到每一行上面
 
分析
有几行就创建一个相应大小的字符串数组,然后用一个指针指示方向进行处理,指针其实就是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;
    }
}
posted @ 2018-04-17 10:56  buptyuhanwen  阅读(254)  评论(0编辑  收藏  举报