给定的字符串进行Z字型排列

//将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
//比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
/*
L   C   I   R
E T O E S I I G
E   D   H   N
*/
package Leetcode;

public class Type_Z {

    public String convert(String s, int numRows){

        //用于接受最后输出的连接后的字符串
        String result = "";
        //定义flag,当达到数组边界是取反
        int j = 0, flag = 1;
        //定义一个字符串数组,大小等于要求写成的行数
        String[] newArr = new String[numRows];
        if(numRows == 1){
            return s;
        }
        //循环字符串,按顺序将字符串依次填入字符串数组
        for(int i = 0;i < s.length();i++)
        {
            if(newArr[j] != null){
                newArr[j] += s.charAt(i) + "";
            }else {
                newArr[j] = s.charAt(i) + "";
            }
            j += flag;
            if(j == numRows-1 || j ==0){
                flag = -flag;
            }
        }

        for(int k = 0;k < newArr.length;k++){

            if(newArr[k] == null){
                break;
            }
            result += newArr[k];
        }
        return result;
    }

    public static void main(String[] args){

        Type_Z obj = new Type_Z();
        String s = "ABHVJFKDIS";
        int numRows = 2;
        System.out.print(obj.convert(s, numRows));
    }
}

申请的newArr中初始化是null,但是在不判断为null的时候,输出的字符串会自带null这个字符串,所以输出加上了判定,连接的时候直接跳过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值