leetcode[ZigZag Conversion]//待整理多种解法

来源:互联网 发布:淘宝店铺提高流量 编辑:程序博客网 时间:2024/05/21 20:26


解法一:

class Solution {    public String convert(String s, int numRows) {    if(numRows < 2){//一行的直接返回原字符串即可    return s;    }            StringBuilder[] row = new StringBuilder[numRows];//这个只是创建了numRows个字符串的引用        for(int i = 0; i < row.length; i++){        row[i] = new StringBuilder();//每一个引用还要创建具体的字符串对象,java数组需要注意这个,区分对象和基本类型        }        boolean upOrDown = true;//upOrDown为true时代表在向下挪动row,反之代表在向上挪动row        int nowMove = 0;//代表现在移动到了第几行        for(int i = 0; i < s.length(); i++){        char get = s.charAt(i);                if(upOrDown){//代表在向下移动        row[nowMove++].append(get);//向第nowMove行的字符串增加        } else{        row[nowMove--].append(get);//代表在向上移动        }                if(nowMove >= numRows || nowMove <= -1){//因为处理完了这一行再自增、自减的,所以需要多超过1的限度        upOrDown = upOrDown ^ true;//取反        //取反了还要修改nowMove的值,变化量是2,因为之前已经取了第一个和最后一个        //只能针对行数大于等于2的,否则会越界        nowMove = nowMove >= numRows ? nowMove-2 : nowMove+2;        }                //System.out.println(nowMove);        }                StringBuilder res = new StringBuilder();        for(int i = 0; i < numRows; i++){//按横排整理结果字符串        res.append(row[i]);        }                return res.toString();    }}


原创粉丝点击