LeetCode 6 :Zigzag Conversion
来源:互联网 发布:dvp_60es编程 编辑:程序博客网 时间:2024/06/05 17:26
LeetCode 6 :Zigzag Conversion
题目大意
给定一个字符串,将其按照Z字形排列成给定行,逐行输出排列后的字符串。
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 NA P L S I I GY 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”.
分析
难点主要在于对问题的理解,尤其是对Z字形的理解,因为例子给的太少,我们对于Z字形的理解很容易错误,然后就是自己觉得哪哪都对,但是提交就是错误。
对于Z字形的理解
对于字符串abcdefghi
a gb f hc e id
为了方便理解同时避免巧合,我们使用上面的例子中的字符串排列成4行来分析(r即为参数中的nRows,这里为了方便书写):
PAYPALISHIRING共有14个字符,排列成4行后如下
P I NA L S I GY A H RP I
用其下标表示为:
0 6 121 5 7 11 132 4 8 103 9
观察可以发现,第一行和最后一行(r-1行)的字符下标为等差数列,差值为dif = 2*(r-1)。中间的行除了等差数列包含的字符外,还每两个数之间增加一个下标与前一个的差值为dif-2*i的字符。但是要注意判断是否超出字符串边界
代码
string convert(string s, int r) { if(r<=1 || s.size()<r) return s; else{ int dif = 2*(r-1); string re = ""; int l = s.size(); for(int i=0;i<r;i++){ for(int j=i;j<l;j+=dif){ if(i==0||i==r-1){ re+=s[j]; } else{ re+=s[j]; if(j+dif-2*i<l){ re+=s[j+dif-2*i]; } } } } return re; }}
- LeetCode 6 - ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- LeetCode(6)ZigZag Conversion
- Leetcode【6】:ZigZag Conversion
- [leetcode 6] ZigZag Conversion
- LeetCode 6 ZigZag Conversion
- LeetCode(6) ZigZag Conversion
- [Leetcode] 6 - ZigZag Conversion
- LeetCode 6:《ZigZag Conversion》
- [leetcode 6] ZigZag Conversion
- LeetCode | #6 ZigZag Conversion
- [leetcode] 6 ZigZag Conversion
- leetCode #6 ZigZag Conversion
- leetcode 6 ZigZag Conversion
- leetcode-6 ZigZag Conversion
- leetcode 6 ZigZag Conversion
- LeetCode 6 - ZigZag Conversion
- leetcode 6ZigZag Conversion
- 关于文件系统的一些理解
- 林青的学业博客
- 纯JS实现图片验证码功能并兼容IE6-8(推荐)
- FtpClient文件的下载
- 二分搜索树
- LeetCode 6 :Zigzag Conversion
- Codeforces Round #433
- HDU 2157How many ways??(矩阵快速幂)
- 文章标题
- SpringMVC文件上传的实现+文件上传工具类设计
- flume--03-flume读取web应用某个文件夹下日志到hdfs
- asp.net core策略授权
- visual studio 2015 光标变成一闪一闪的小方块
- androiod图片加入系统图库