原题链接https://leetcode.com/problems/zigzag-conversion/

没开始看题目时,小陌发现这道题似乎备受嫌弃,被n多人踩了,还有点小同情

  • 题目描述

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

    P   A   H   N
    A P L S I I G
    Y I R

    And then read line by line: "PAHNAPLSIIGYIR"

    Write the code that will take a string and make this conversion given a number of rows:

    string convert(string s, int numRows);

    Example 1:

    Input: s = "PAYPALISHIRING", numRows = 3
    Output: "PAHNAPLSIIGYIR"

    Example 2:

    Input: s = "PAYPALISHIRING", numRows = 4
    Output: "PINALSIGYAHRPI"
    Explanation: P I N
    A L S I G
    Y A H R
    P I
  • 思路分析:
    题目需求是把输入字符排成锯齿牙子,再按行进行输出
    至于锯齿牙子啥样,没脑补出来的猿兄们看eg:
    Input: s = "123456789", numRows = 2
    1 3 5 7 9
    2 4 6 8

Output: "135792468"
Input: s = "123456789", numRows = 3
1     5   9
2  4 6 8
3     7

Output: "159246837"
Input: s = "123456789", numRows = 4
1       7
2    6 8
3 5    9
4


Output: "172683594"
恭喜猿兄,你已经把这道题中“最难”的部分搞定了,如你所见,除了题意相对难理解之外,剩下的简直就是数学的找规律问题
尔后猿兄也发现阿六为啥被踩了叭~
规律分析:(方便起见,n=numRows)

         
首尾两行元素之间的间隔interval1 = 2n-2

两者之间的行中元素的间隔interval = 前一元素的列数 + interval1 - 2 * 当前行数

  • 源码附录
    class Solution {
    public String convert(String s, int numRows) {
    if(s == null||numRows<=0){
    return "";
    }
    if(s.length()<2||numRows<2){
    return s;
    } int interval = 2*numRows - 2;
    int interval1;
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<numRows;i++){
    for(int j=i;j<s.length();j=j+interval){
    sb.append(s.charAt(j));
    if(i != 0&&i != numRows-1){
    interval1 = j + interval - 2*i;
    if(interval1 < s.length()){
    sb.append(s.charAt(interval1));
    }
    }
    }
    }
    return sb.toString();
    }
    }

ZigZag Conversion——LeetCode进阶路⑥的更多相关文章

  1. 6. ZigZag Conversion - LeetCode

    Question 6. ZigZag Conversion Solution 题目大意:将字符串按Z字型排列,然后再一行一行按字符输出 思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出 ...

  2. ZigZag Conversion leetcode java

    题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...

  3. ZigZag Conversion [LeetCode]

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  4. 6.[leetcode] ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  5. LeetCode解题报告—— 2 Keys Keyboard & Longest Palindromic Substring & ZigZag Conversion

    1. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You ...

  6. LeetCode ZigZag Conversion(将字符串排成z字型)

    class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...

  7. 【leetcode❤python】 6. ZigZag Conversion

    #-*- coding: UTF-8 -*- #ZigZag Conversion :之字型class Solution(object):    def convert(self, s, numRow ...

  8. leetcode第六题 ZigZag Conversion (java)

    ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...

  9. leetcode题解 6.ZigZag Conversion

    6.ZigZag Conversion 题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a gi ...

  10. LeetCode 6. ZigZag Conversion & 字符串

    ZigZag Conversion 看了三遍题目才懂,都有点怀疑自己是不是够聪明... 就是排成这个样子啦,然后从左往右逐行读取返回. 这题看起来很简单,做起来,应该也很简单. 通过位置计算行数: P ...

随机推荐

  1. Flume - [05] Hbase sink

    一.概述   此接收器将数据写入Hbase.Hbase配置是从类路径中遇到的第一个Hbase-site.xml获取的.由配置指定的实现 HbaseEventSerializer 的类用于将事件转换为 ...

  2. Linux - 配置IP&主机名的快捷操作

    nmtui 执行以下命令可以进入一个可视化界面,进行IP的可视化配置.以及网络服务的重启(注意,这个重启是停止然后启动, 如果使用xshell进行操作会失去ssh连接,直连服务器时可这直接操作).主机 ...

  3. 错误修正记录: [Vivado 12-8300] Launch HLS failed! Please see vitis_hls.log for details.

    起因 使用了Vivado Video Frame Buffer Read和Vivado Video Frame Buffer Write,按out of context模式综合失败.vivado版本2 ...

  4. QWidget的isHidden和isVisible

    文章目录 QWidget的isHidden和isVisible 问题的出现 QWidget的show()函数 QWidget的isVisible和isHidden 源码追溯 QWidget的isHid ...

  5. rust学习笔记(4)

    流程控制 if if n < 0 { print!("{} is negative", n); } else if n > 0 { print!("{} is ...

  6. PHP的回调函数

    所谓的回调函数,就是指调用函数时并不是向函数中传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中,这个作为参数的函数就是回调函数.通俗的来说,回调函数也是一个我们定义的函数,但是不 ...

  7. 四大AI编程工具组合测评

     在当今数字化浪潮中,AI 编程工具如雨后春笋般涌现,极大地提升了编程效率与体验.本文将详细剖析四类 AI 编程工具组合,从开发工具.大模型.插件搭配,到编程能力.费用体系及综合评价,为开发者提供全面 ...

  8. Django实战项目-学习任务系统-用户登录

    第一步:先创建一个Django应用程序框架代码 1,先创建一个Django项目 django-admin startproject mysite 将创建一个目录,其布局如下: mysite/ mana ...

  9. windows 稀疏文件 (sparse file) 的一个实用场景——解决 SetEndOfFile 占据磁盘空间引入的性能问题

    前言 之前写过一篇文章说明文件空洞:<[apue] 文件中的空洞>,其中提到了 windows 稀疏文件是制造空洞的一种方式,但似乎没什么用处,如果仅仅处理占用磁盘空间的场景,使用SetE ...

  10. FireDAC的数据库的FDConnect

    通常,我们设置一个ini文件,按照FDConnection的ini格式要求配置好.然后直接调用通知连接数据库是否OK. FireDAC可以通过FDManager管理ini文件简单实现.即由FDConn ...