文档章节

LeetCode题解-6-ZigZag Conversion

蔡晓建
 蔡晓建
发布于 2017/02/23 20:56
字数 236
阅读 9
收藏 0
点赞 0
评论 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
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
LeetCode - ZigZagConversion

以下题干翻译自LeetCode,原文题目请参见LeetCode网址: ZigZagConversion 有一个字符串,当使用ZigZag模式写,并且指定了对应的行数时,如下所示(最好设置一个定长的字体来看): 然后我们要将...

Mock2052
2017/11/21
0
0
LeetCode 401 Binary Watch

LeetCode 排列组合 题目汇总 LeetCode 数字 题目汇总 LeetCode 动态规划 题目分类汇总 干货!LeetCode 题解汇总 题目描述 A binary watch has 4 LEDs on the top which represent the hours...

被称为L的男人
2017/12/10
0
0
LeetCode 打家劫舍系列(House Robber)

LeetCode 打家劫舍系列(House Robber) Mz的博客2016-03-15147 阅读 算法动态规划C/C++ LeetCode上的打家劫舍系列(House Robber)可以说是经典的DP问题,用来练习是再好不过了。 打家劫舍之一 ...

Mz的博客
2016/03/15
0
0
leetcode算法题解(Java版)-1-二叉树遍历

又开始刷算法题了,正好在学Java,顺便也练练Java。 题目描述 Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right......

kissjz
04/27
0
0
[LeetCode] Zigzag Iterator 之字形迭代器

Given two 1d vectors, implement an iterator to return their elements alternately. For example, given two 1d vectors: v1 = [1, 2]v2 = [3, 4, 5, 6] By calling next repeatedly unti......

机器的心脏
2017/12/15
0
0
LeetCode 461 Hamming Distance

LeetCode 排列组合 题目汇总 LeetCode 数字 题目汇总 LeetCode 动态规划 题目分类汇总 干货!LeetCode 题解汇总 题目描述 The Hamming distance between two integers is the number of pos...

被称为L的男人
2017/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
28分钟前
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
45分钟前
4
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0
There is no session with id[xxx]

参考网页 https://blog.csdn.net/caimengyuan/article/details/52526765 报错 2018-07-19 23:04:35,330 [http-nio-1008-exec-8] DEBUG [org.apache.shiro.web.servlet.SimpleCookie] - Found......

karma123
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部