zoukankan      html  css  js  c++  java
  • leetcode 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<3){
                return "";
            }
            if (s.length()<4){
                return s;
            }
            StringBuffer[] sb=new StringBuffer[numRows];
            for (int i=0; i<numRows;i++){
                sb[i]=new StringBuffer();
            }
            for (int i=0;i<s.length();i++){
                int num=i%(2*numRows-2);
                if (num<numRows){
                    sb[num].append(s.charAt(i));
                }
                else{
                    sb[numRows-num%(numRows-1)-1].append(s.charAt(i));
                }
            }
            for(int i=1;i<numRows;i++){
                sb[0].append(sb[i]);
            }
            return sb[0].toString();
        }
    
        public static void main(String[] args) {
            Solution s=new Solution();
            System.out.println(s.convert("LEETCODEISHIRING",3));
    
        }
    }
    

      时间击败68.75%,内存击败98%

  • 相关阅读:
    logback-spring.xml配置文件详解
    SpringBoot-Controller接收参数的几种常用方式
    spring boot配置定时任务设置
    SpringCloud 配置文件 application.yml和 bootstrap.yml区别
    ajax/get请求
    ajax封装2
    ajax封装1
    楼层特效
    旋转动画
    联动动画
  • 原文地址:https://www.cnblogs.com/linwenbin/p/11890696.html
Copyright © 2011-2022 走看看