2020.08.02-算法笔记 LeetCode第6 题

101 阅读1分钟
 public static void main(String[] args) {
        String   s = "PAYPALISHIRING";
        int nums = 3;

        convert(s,nums);
    }
    public static String convert(String s, int numRows) {

        if(s== null || s.length() == 0 ){
            return s;
        }

        int length = s.length();

        if(numRows == 1 || length < numRows){
            return s;
        }

        //行数
        StringBuilder [] sb = new StringBuilder[numRows];

        for(int i = 0;i< numRows ;i++){
            sb[i] = new StringBuilder();
        }
        int j = 0;
        //从0 开始网上堆元素
        while( j<length) {

            //
            for( int idx = 0;idx < numRows && j<length;idx++){
                sb[idx] = sb[idx].append(s.charAt(j++));
            }


            for( int idx = numRows-2;idx >=1 && j<length;idx--){
                sb[idx] = sb[idx].append(s.charAt(j++));
            }

        }
        for(int i = 1;i<numRows;i++){
            sb[0].append(sb[i]);
        }
        return sb[0].toString();
    }