leetcode-6-Z 字形变换

问题:

 

package com.nxz.blog.otherTest;

import java.util.ArrayList;
import java.util.List;

public class Test6ZigzagConversion {

    /**
     * z字形变换  将一个字符串按照z字形输出
     * 源字符串:    LEETCODEISHIRING
     * 输出:       LCIRETOESIIGEDHN
     * L   C   I   R
     * E T O E S I I G
     * E   D   H   N
     * <p>
     * 定义numrows个对象分别存储numrows行中的字符,定义一个移动方向,向下和向上
     * 循环将原字符串中的字符添加的numrows个对象中,
     * 最后输出
     */
    private List<StringBuffer> arr = new ArrayList<>();

    public String convert(String s, int numRows) {
        // 初始化三个stringbuffer对象,用来保存每一行中的字符
        for (int i = 0; i < numRows; i++) {
            arr.add(new StringBuffer());
        }

        // 定义一个变量,用来控制行+1  还是行-1
        boolean down = false;
        // 当前行
        int curLine = 0;
        for (char c : s.toCharArray()) {
            arr.get(curLine).append(c);
            //每当是第一行会最后一行是,控制行是增还是减(也就是控制down是true还是false)
            if (curLine == 0 || curLine == numRows - 1) {
                down = !down;
            }
            curLine += down ? 1 : -1;
        }

        String res = "";
        for (int i = 0; i < arr.size(); i++) {
            res += arr.get(i).toString();
        }
        return res;
    }

    public static void main(String[] args) {
        Test6ZigzagConversion t = new Test6ZigzagConversion();
        String leetcodeishiring = t.convert("LEETCODEISHIRING", 3);
        System.out.println(leetcodeishiring);

    }
}

 

转载于:https://www.cnblogs.com/nxzblogs/p/11180531.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值