求一个字符串Z型输出(字符数组实现)

主要的过程:先算出一共有多少列,然后申请一个空的数组,然后遍历字符串,存值输出。具体看下面代码:

class Solution {

    public String convert(String s, int numRows) {
        int len = s.length();
        
        //斜的有多少个
        int slash = n -2;
        int colNum = 0;
        
        // 得到这个列数,其实也就是每行的个数
        while(len > 0){
            len = len-n;
            colNum ++;
            
            for(int i=0; i < slash&&len>0; i++){
                len--;
                cloNum++;
            }
        }
        
        //建立一个一维数组用来保存数据
        char result[] = new Char[n*rowLength];
        for(int i=0; i < result.length; i++){
            result[i]='';
        }
        
        int curCol = 0;//当前处理的列
        int index = 0;//控制所有的书
        
        //将字符串写入数组
        while(index < s.length()){
            // 将每一列的数组写到数组中
            for(int i=0; i < n&&index <s.length(); i++){
                result[colNum * i + curCol] = s.charAt(index);
                index++;
            }
            curCol++;
            
            // 将斜线的写入数组
            for(int i = n-2; i>0&&index < s.length(); i--){
                result[colNum*i + curCol] = s.charAt(index);
                curCol++;
                index++;
            }
        }
         int flag = 0;
         for(int i = 0; i < curColumn; i++){  
            for(int j =0; j < rowLength; j++){  
                if(flag < result.length){  
                    System.out.print(result[i * curColumn + j]);  
                }  
                flag++;  
            }  
            System.out.println();  
        } 
        
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值