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"
.
链接: http://leetcode.com/problems/zigzag-conversion/
题解:
根据例子列出n = 3和n = 4的情况,计算出列间距zigSize = 2 * numRows - 2,所以每行元素为 i + n * zigSize以及斜线的计算公式,当i为行数时,斜线上元素为i + n * zigSize - 2 * i。
Time Complexity - O(n), Space Complexity - O(n)。
public class Solution {public String convert(String s, int numRows) {int zigSize = 2 * numRows - 2;if(s == null || s.length() == 0 || zigSize <= 0)return s;StringBuilder result = new StringBuilder();for(int i = 0; i < numRows; i ++){for(int j = i; j < s.length(); j += zigSize){result.append(s.charAt(j)); if(i != 0 && i != numRows - 1 && j + zigSize - 2 * i < s.length() )result.append(s.charAt(j + zigSize - 2 * i));}}return result.toString();} }
二刷:
Java:
要注意 zigSize = 2 * numSize - 2, zag = j + zigSize - 2 * i
public class Solution {public String convert(String s, int numRows) {int zigSize = 2 * numRows - 2; // calculate zigSizeif (s == null || s.length() == 0 || zigSize <= 0) {return s;}StringBuilder sb = new StringBuilder();for (int i = 0; i < numRows; i++) {for (int j = i; j < s.length(); j += zigSize) {sb.append(s.charAt(j));if (i != 0 && i != numRows - 1 && j + zigSize - 2 * i < s.length()) { // calculate zagsb.append(s.charAt(j + zigSize - 2 * i));}}} return sb.toString(); } }
Python:
class Solution(object):def convert(self, s, numRows):""":type s: str:type numRows: int:rtype: str"""zigSize = 2 * numRows - 2if s == None or zigSize <= 0:return sres = ''for i in range(numRows):for j in range(i, len(s), zigSize):res += s[j]zag = j + zigSize - 2 * iif i not in (0, numRows - 1) and zag < len(s):res += s[zag]return res
三刷:
其实就是看了一遍二刷的解而已。
Java:
public class Solution {public String convert(String s, int numRows) {int zigSize = 2 * numRows - 2; if (s == null || s.length() == 0 || zigSize <= 0) return s;StringBuilder sb = new StringBuilder();for (int i = 0; i < numRows; i++) {for (int j = i; j < s.length(); j += zigSize) {sb.append(s.charAt(j));if (i != 0 && i != numRows - 1 && j + zigSize - 2 * i < s.length()) { // calculate zagsb.append(s.charAt(j + zigSize - 2 * i));}}} return sb.toString(); } }
Reference:
http://www.cnblogs.com/springfor/p/3889414.html
转载于:https://www.cnblogs.com/yrbbest/p/4430333.html
6. ZigZag Conversion相关推荐
- ZigZag Conversion
ZigZag Conversion 1. Question 给定行数,将某字符串转换为zigzag形式,然后按行输出.zigzag形式如: The string "PAYPALISHIRIN ...
- [LeetCode题解] ZigZag Conversion
原文在这,可以来我blog翻翻哦. 第二天.今天AC掉了一道之前没AC掉的题目... 今天的题目是6. ZigZag Conversion 题目描述: The string "PAYPALI ...
- [LeetCode]ZigZag Conversion
题目:ZigZag Conversion 一串字符按照Z字形的数组给了我们,要求转成原本的顺序. 思路: 统计"|/"的个数: 竖着的和斜着的下标有对应关系: 竖着的:k = j* ...
- leetCode 6. ZigZag Conversion 字符串 (上传费劲)
6. ZigZag Conversion 题目:https://leetcode.com/problems/zigzag-conversion/ 1 2 3 4 5 6 7 8 9 10 11 12 ...
- [勇者闯LeetCode] 6. ZigZag Conversion
[勇者闯LeetCode] 6. ZigZag Conversion Description The string "PAYPALISHIRING" is written in a ...
- 6——ZigZag Conversion
六.ZigZag Conversion 锯齿变换 题目大意:输入一个字符串和int型(锯齿层数) 将字符串以锯齿变化重新排序 例: "HAIZEIKEJILAOCHUANZHANG" ...
- LeetCode 6. ZigZag Conversion
原题链接在这里:https://leetcode.com/problems/zigzag-conversion/ 题目: The string "PAYPALISHIRING" i ...
- 蜗牛慢慢爬 LeetCode 6. ZigZag Conversion [Difficulty: Medium]
题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...
- ZigZag Conversion leetcode java
题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...
最新文章
- c/c++ c++ file c++/stl/boost 判断文件目录是否存在
- 关于线程池你不得不知道的一些设置
- 你什么时候使用git rebase而不是git merge?
- autorelease使用注意事项
- Mybatis学习总结二
- Postman Could not get any response
- jQuery上拉加载更多
- 编写你的第一个 Django 应用,第 5 部分
- UOJ#351-新年的叶子【树的直径,数学期望】
- Html5和Css3扁平化风格网页
- 十一假期国人消费力爆棚,国内旅游收入超6497亿,你花了多少?
- 百万畅销书带你学 Python:第一个程序
- Linux命令:find
- 避免踩坑,数据库主键字段不能为空
- google ads 关联 firebase 进行广告投放配置
- bat脚本打开cmd执行命令
- word中更新目录中只更新页码和更新整个目录的区别
- 45、链栈_LinkStack
- 华为python673集_实现Redis Cluster并实现Python链接集群
- gpg invalid解决方法