原题链接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. Typecho博客服务器搬家换空间方法教程

    Typecho 博客搬家方法步骤: 1.备份Typecho博客数据库,进入到phpmyadmin选择自己博客的数据表进行导出备份 2.使用FTP(或者登陆空间控制面板)把所有的Typecho文件下载到 ...

  2. .net 8 C# 集成 AWS Cognito SMS/Email 注册与登录

    本文主要分为三个部分: 1.描述 cognito 涉及的专业术语 以及 交互流程 2..net 集成的代码 3.感想 * 阅读提示 :鼠标悬停在 章节标题 上可见 文章目录 1. Cognito 概念 ...

  3. 【ABAQUS 二次开发笔记】Python 报错收集和解决方法

    1. 运行报错,找不到本地文件及模块.自定义模块 1.1 Example: $/home/tops/bin/python xxx.py Traceback (most recent call last ...

  4. Ctfhub-SSRF部分做题记录

    Ctfhub-SSRF部分做题记录 上传文件 提示:这次需要上传一个文件到flag.php了.祝你好运 进入flag.php 发现没有提交按钮 修改源代码,加个提交按钮 抓包 修改host为127.0 ...

  5. Golang 入门 : Go语言的设计哲学

    前言 设计哲学之于编程语言,就好比一个人的价值观之于这个人的行为. 因为如果你不认同一个人的价值观,那你其实很难与之持续交往下去,即所谓道不同不相为谋.类似的,如果你不认同一门编程语言的设计哲学,那么 ...

  6. vSphere虚拟化之ESXi的安装及部署

    vSphere虚拟化之ESXi的安装及部署一.什么是vSphere?vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个版本的改进 ...

  7. Windows Server评估版/正式版/数据中心版的来源及转换

    评估版: 从微软评估中心下载的版本,相当于微软提供的试用版,可免费使用一段时间.但该版本无法使用 KMS授权或 MAS 永久授权进行激活. 正式版/数据中心版: 从微软许可证中心下载的版本已标识了GL ...

  8. 模型即产品?从应用角度看AI产品发展趋势

    提供AI咨询+AI项目陪跑服务,有需要回复1 在ChatGPT发布后的两年里,AI应用层的发展可以用一个词来评价不温不火,到去年年初时甚至有些疲软的情况.其原因有三点: 第一,算力不足,模型API响应 ...

  9. Golang高性能引擎:ZKmall开源商城支撑百万级日活交易流畅运行

    在电商业务高并发.低延迟的严苛场景下,技术栈的选择直接决定系统上限.ZKmall开源商城基于Golang技术生态,以协程级并发.毫秒级响应为核心优势,为百万级日活电商平台提供高性能解决方案.本文从架构 ...

  10. C++ 程序员入门需要多久,怎样才能学好?

    一.我的C++学习之路:一个嵌入式老兵的自白 先交代一下我的背景:理工科毕业,半路出家学的编程.大学时代是机械专业,但阴差阳错进了一家电子公司,被分配做嵌入式开发,于是硬着头皮自学了C语言和单片机,后 ...