文档章节

LeetCode题解-6-ZigZag Conversion

蔡晓建
 蔡晓建
发布于 2017/02/23 20:56
字数 236
阅读 9
收藏 0

解题思路

这个题目我是分2种情况来考虑的,考虑首行和最后一行,每个数的间隔是2*(numRows-1), 对于中间其他行,那么的间隔是2*(numRows-1)-2row或者2row, 其中row表示当前所在的行号。算法是逐行扫描,计算当前符号在输入字符串中的位置,而对应转换后的位置不断加1就可以了。可以看下面的图:

  • 首行和尾行

输入图片说明

  • 其他行

输入图片说明

参考源码

public class Solution {
    public String convert(String s, int numRows) {
        if (numRows <= 1) {
            return s;
        }

        int len = s.length();
        char[] cs = new char[len];

        int newpos = 0;
        for (int row = 0; row < numRows; row++) {
            //first or last row
            if (row == 0 || row == numRows - 1) {
                int pos = row;
                while (pos < len && newpos < len) {
                    cs[newpos] = s.charAt(pos);
                    newpos++;
                    pos += 2 * (numRows - 1);
                }
            } else {
                int pos = row;
                int dir = 0;
                while (pos < len && newpos < len) {
                    cs[newpos] = s.charAt(pos);
                    newpos++;
                    if (dir == 0) {
                        pos += 2 * (numRows - 1) - 2 * row;
                        dir = 1;
                    } else if (dir == 1) {
                        pos += 2 * row;
                        dir = 0;
                    }
                }
            }
        }
        return new String(cs);
    }
}

© 著作权归作者所有

共有 人打赏支持
蔡晓建
粉丝 8
博文 25
码字总数 9436
作品 0
广州
高级程序员
[leetcode] ZigZag Conversion

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 ......

jdflyfly
2014/06/24
0
0
LeetCode-ZigZag conversion

Zigzag Conversion Solution mind path We can notice that it has a pattern. Every zigzag pattern is composed by a list of structures.As of example 2, Let's write the zigzag positi......

Quan全
07/10
0
0
Leetcode 6. ZigZag Conversion

版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/82747050 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 1. Descr...

SnailTyan
09/17
0
0
6. ZigZag Conversion - LeetCode

LeetCode Problems Solutions question description: 问题描述 //问题截图: origin.png //锯齿状 sawtooth.png Thinking 你们可以自己先考虑一下。 solution with java - Java解决方案 solu......

才华惊动党中央
2017/08/23
0
0
leetcode算法题解(Java版)-2-最长回文子串

一、int数字反转 题目描述 Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 思路: 题目很简单,需要注意的是:int型是32位的。1000000003 ...

kissjz
04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
1
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部