ZigZag Conversion leetcode java
题目:
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"
.
题解:
这道题就是看坐标的变化。并且需要分块处理。
n=2时,字符串坐标变成zigzag的走法就是:
0 2 4 6
1 3 5 7
n=3时的走法是:
0 4 8
1 3 5 7 9
2 6 10
n=4时的走法是:
0 6 12
1 5 7 11 13
2 4 8 10 14
3 9 15
可以发现规律,画红色的长度永远是 2n-2 (想法是你试想把所有这些行压缩成两列,两边手挤一下,第二列永远的第一行和最后一行少字)。
利用这个规律,可以按行填字,第一行和最后一行,就是按照2n-2的顺序一点点加的。
其他行除了上面那个填字规则,就是还要处理斜着那条线的字,可以发现那条线的字的位置永远是当前列j+(2n-2)-2i(i是行的index)。
按照上面的规律就可以写出代码了。
代码如下:
2 if(s == null || s.length()==0 || nRows <=0)
3 return "";
4 if(nRows == 1)
5 return s;
6
7 StringBuilder res = new StringBuilder();
8 int size = 2*nRows-2;
9 for(int i=0;i<nRows;i++){
10 for(int j=i;j<s.length();j+=size){
11 res.append(s.charAt(j));
12 if(i != 0 && i != nRows - 1){//except the first row and the last row
13 int temp = j+size-2*i;
14 if(temp<s.length())
15 res.append(s.charAt(temp));
16 }
17 }
18 }
19 return res.toString();
20 }
Reference:http://blog.unieagle.net/2012/11/08/leetcode%E9%A2%98%E7%9B%AE%EF%BC%9Azigzag-conversion/
转载于:https://www.cnblogs.com/springfor/p/3889414.html
ZigZag Conversion leetcode java相关推荐
- 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 ...
- [LeetCode题解] ZigZag Conversion
原文在这,可以来我blog翻翻哦. 第二天.今天AC掉了一道之前没AC掉的题目... 今天的题目是6. ZigZag Conversion 题目描述: The string "PAYPALI ...
- [LeetCode]ZigZag Conversion
题目:ZigZag Conversion 一串字符按照Z字形的数组给了我们,要求转成原本的顺序. 思路: 统计"|/"的个数: 竖着的和斜着的下标有对应关系: 竖着的:k = j* ...
- ZigZag Conversion
ZigZag Conversion 1. Question 给定行数,将某字符串转换为zigzag形式,然后按行输出.zigzag形式如: The string "PAYPALISHIRIN ...
- java in array_ArrayList to Array Conversion in Java
ArrayList to Array Conversion in Java Following methods can be used for converting ArrayList to Arra ...
- array in java,ArrayList to Array Conversion in Java
ArrayList to Array Conversion in Java Following methods can be used for converting ArrayList to Arra ...
- java conversion_java 基本数据类型之间的转换(Conversion between Java basic data types).doc...
java 基本数据类型之间的转换(Conversion between Java basic data types) java 基本数据类型之间的转换(Conversion between Java ...
- 6——ZigZag Conversion
六.ZigZag Conversion 锯齿变换 题目大意:输入一个字符串和int型(锯齿层数) 将字符串以锯齿变化重新排序 例: "HAIZEIKEJILAOCHUANZHANG" ...
最新文章
- python3 xrange *的作用
- [IS-IS] IS-IS路由协议的基本知识及配置
- 【C++】45.尽量不要在构造函数中调用函数或开启线程
- dataframe转换成dict和列表的技巧
- C++学习系列笔记(七)
- 什么是徽标LOGO模板?
- js常用内建对象之:Date
- 如何解决“呈现控件时出错”的问题(转)
- 神经网络ANN分类器及OpenCV实现
- Eclipse语言包的安装与卸载
- 史上最详细教你制作“U盘启动盘”重装Windows10系统
- c语言数组判断不及格人数,C语言编程 运用数组求不及格人数
- Java对象扁平化的操作
- 大鱼号自媒体如何快速通过试运营转正?
- 下载国外软件慢(例如:Python安装包)
- 蚂蚁课堂 - springboot入门(非常详细)讲解人:(余胜军)
- windows7 系统搭建webdav服务
- linux学习笔记二
- php读取excel文件数据
- 超多免费的各类API
热门文章
- ORACLE TO_CHAR的一个问题
- DataGrid/DataList封装操作函数库!
- why different people have different digital response?
- Work measurement II
- 简单程序跟踪调试方式
- “如果把所有的经济学家都放在一起,他们永远不会得出结论。 - 萧伯纳
- http://udacity.com 和 https://www.udemy.com 请注意区分!
- 关于linkedin的network的观察和自己的职业道路的追求
- oppo8.0系统手机(亲测有效)激活xposed框架的教程
- QTP的那些事--调用外部的文件的方法