• 6. Z 字形变换-字符串-中等难度


    问题描述

    将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

    比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

    L C I R
    E T O E S I I G
    E D H N
    之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

    请你实现这个将字符串进行指定行数变换的函数:

    string convert(string s, int numRows);
    示例 1:

    输入: s = "LEETCODEISHIRING", numRows = 3
    输出: "LCIRETOESIIGEDHN"
    示例 2:

    输入: s = "LEETCODEISHIRING", numRows = 4
    输出: "LDREOEIIECIHNTSG"
    解释:

    L D R
    E O E I I
    E C I H N
    T S G

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/zigzag-conversion

    解答

    class Solution {
        public String convert(String s, int numRows) {
            if(numRows == 1)return s;
            StringBuilder res = new StringBuilder();
            int step = 2*(numRows-1), little_step, len = s.length(), flag;
            for(int i=1;i<=numRows;i++){
                flag = 1;
                if(i==1 || i == numRows){
                    little_step = i-1;
                    while(little_step < len){
                        res.append(s.charAt(little_step));
                        little_step += step;
                    }
                }else{
                    little_step = i-1;
                    while(little_step < len){
                        res.append(s.charAt(little_step));
                        if(flag == 0)flag = 1; //非中间节点,则改变步伐。
                        else flag = 0;
                        if((numRows-i)*2 != numRows-1){
                            if(flag == 1){
                                little_step += step - (numRows-i)*2;
                            }else little_step += (numRows-i)*2;
                        }else little_step += (numRows-i)*2;
                    }
                }
            }
            return res.toString();
        }
    }
  • 相关阅读:
    个人博客05
    个人随笔04
    ELK-Kibana汉化
    Centos7下使用mail发送邮件
    使用Docker搭建Tomcat运行环境
    Jenkins添加maven插件
    linux下安装nodejs及npm
    服务器重启后Jenkins项目部分丢失问题解决方法
    【linux】如何查看文件的创建、修改时间
    禅道
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13341106.html
Copyright © 2020-2023  润新知