leetcode题解 6.ZigZag Conversion
6.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 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 text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
这个题目首先要理解什么是zigzag。
其实就是给你一个字符串和一个数字(行数),先分析一个简单的例子
比如:convert("123456789",4)
1 7
2 6 8
3 5 9
4
就应该返回“172683594”,其实就是先给你一个字符串,然后按z字型放到一个给定的行数里。
这个题是看了一些网上的思路来完成的。
思路:
首先要有一个特殊情况就是给的行数非常少为1,那么就只能放在这一个行里面,其实这样输入
和输出的就是相同的字符串,直接返回即可,或者是行数非常之多,超过了字符串中的字符数量,
那么也很简单,就是直接返回这个字符串即可(相当于他一行放一个,一直换行)。
现在开始考虑正常的情况:外面套一个for循环,把给的字符串中的字符每个都轮流来一遍。
里面其实就是一开始行数为0,只要行数没有到规定的最多行数,行数就一直++,我是用一个
down作为一个标志。一旦到了最多行数,就把开始--,行数再到达0的时候又开始++每次循环的
时候,就把这个字符放到那个行数对应的字符串里面。最后把所有的字符串都连接起来,作为
result即可。
代码如下:
class Solution {
public:
string convert(string s, int numRows) {
string* rowStr=new string[numRows];
int numOfChar=s.length();
int begin=;
if(numRows<=||numRows>=numOfChar)
return s;
int row=;
bool down=true;
for(int i=;i<numOfChar;i++)
{
rowStr[row]=rowStr[row]+s[i];
if(row==numRows-)
down=false;
if(row==)
down=true;
if(down)
row++;
else row--;
}
string result;
for(int i=;i<numRows;i++)
result+=rowStr[i];
return result;
}
};
leetcode题解 6.ZigZag Conversion的更多相关文章
- 《LeetBook》leetcode题解(6): ZigZag Conversion[E]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- 【LeetCode】6. ZigZag Conversion Z 字形变换
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字形变换,ZigZag,题解,Leetcode, 力扣,P ...
- 【一天一道LeetCode】#6 ZigZag Conversion
一天一道LeetCode系列 (一)题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given ...
- 【LeetCode】006. ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 【LeetCode】6 - ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- leetcode problem 6 ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode OJ:ZigZag Conversion(字符串的Z字型转换)
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode(6) - ZigZag Conversion
这个题的要求是给你一个字符串,和一个行数,例如(s = "mysisteristhemostlovelygirl" , row = 4),每一行一个字符串,但是s却得按照zigza ...
- 【LeetCode】6. ZigZag Conversion 锯齿形转换
题目: 思路: 以图为例:s={'A','B','C','D','E','F','G','H'.....} 1.先不考虑中间元素F.G.H.N...,每一行前后元素在数组中对应下标相差size=2*n ...
随机推荐
- linux下tomcat 8的安装以及tomcat启动慢问题
今天在 linux 下安装了 tomcat,中间也是一路波折,最终安装好了.感觉应该有不少伙伴跟我一样都会踩到这些坑,打算记录下来.使用的是通用(ubantu,debian, centos 均可)的安 ...
- Eclipse常用不常用快捷键
逼格高且常用的7个快捷键:Ctrl+O:列出该类下的所有方法 Ctrl+E:列出打开的所有类 Shift+Enter:在当前行下一行创建空白行(Ctrl+Shift+Enter:在当前行上一行 ...
- 如何使用mysqldump备份数据库
一.背景 在开发项目中,数据库是核心资产.除了做主备冗余增加可靠性外,定期备份数据也是必须的. 使用mysqldump备份数据具有操作简单,备份和恢复时间短的优点(mysqldump备份数据生成的是批 ...
- 使用NPOI导出Excel引发异常(IsReadOnly = “book.IsReadOnly”引发了类型“System.NotImplementedException”的异常)
前言: 本人调式npoi导入.导出试用成功后,引入到项目中,导入完美运行,但是导出怎么样都看不到现在的页面,而且浏览器和后台都没有报任务错误,让人好事纳闷,后来去调式,发现在除了一个IsReadOnl ...
- 记一次线上Curator使用过程JVM栈溢出解决
为了同学们看起来一目了,特按如下思路进行讲解. 1.出现的场景 2.分析及解决的过程 3.总结 最近公司要使用zookeeper做配置管理(后面简称ZK),然后自己就提前用虚拟机进行 ...
- thoughtworks面试题分析与解答
题目描述 A squad of robotic rovers are to be landed by NASA on a plateau on Mars. This plateau, which is ...
- 简单几步优化你的windows,加快开机速度(重装windows之后要做的几件事)
每个人都想要让自己的系统运行得快一些,开机快一些,我就来说说我自己的经验,我使用的系统是windows8.1,当然这有些方法也适用于其他的系统,我每次重装完系统之后第一件事就是下面几步,当然重装系统之 ...
- WordPress中添加自定义评论表情包的方法
先来看看效果: 现在由于WordPress版本更新,再加上WordPress主题也越来越多,而现在的主题一般都是禁用了WordPress自带的评论表情,其实自带 的评论表情也是很丑的,但是以前我们可以 ...
- .net core实现redisClient
引言 最近工作上有需要使用redis,于是便心血来潮打算自己写一个C#客户端.经过几天的努力,目前该客户端已经基本成型,下面简单介绍一下. 通信协议 要想自行实现redisClient,则必须先要了解 ...
- IPFS家族(二)
go-ipfs IPFS协议的go语言实现,ipfs的核心协议,最新版是v0.4.13 下载地址:https://dist.ipfs.io/#go-ipfs 源代码地址:https://github. ...