Leetcode 6. ZigZag Conversion
2016-01-24 12:03
423 查看
The string
this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
Analysis: you have to pay attention to the order that the String traverse: How to get
the index of the String:
public class Solution {
public String convert(String s, int numRows) {
int length = s.length();
StringBuffer result = new StringBuffer();
char[] sToArray = s.toCharArray();
if(numRows == 1)
return s;
//This is to append the first row.
int next = 0;
while(next < length){
result.append(sToArray[next]);
next = next + 2*(numRows - 1);
}
for(int i = 1; i < numRows - 1; i++){
boolean zig = true;
int begin = i;
int nextEle = i;
while(nextEle < length){
//This is to return the result;
result.append(sToArray[nextEle]);
//first start with from top to bottom zig order
if(zig){
nextEle = nextEle + 2*(numRows - i - 1);
zig = false;
}
else{
nextEle = nextEle + i *2;
zig = true;
}
}
}
//This is to append the elements in the last row.
next = numRows - 1;
while(next < length){
result.append(sToArray[next]);
next = next + 2*(numRows - 1);
}
return result.toString();
}
}
"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".
Analysis: you have to pay attention to the order that the String traverse: How to get
the index of the String:
public class Solution {
public String convert(String s, int numRows) {
int length = s.length();
StringBuffer result = new StringBuffer();
char[] sToArray = s.toCharArray();
if(numRows == 1)
return s;
//This is to append the first row.
int next = 0;
while(next < length){
result.append(sToArray[next]);
next = next + 2*(numRows - 1);
}
for(int i = 1; i < numRows - 1; i++){
boolean zig = true;
int begin = i;
int nextEle = i;
while(nextEle < length){
//This is to return the result;
result.append(sToArray[nextEle]);
//first start with from top to bottom zig order
if(zig){
nextEle = nextEle + 2*(numRows - i - 1);
zig = false;
}
else{
nextEle = nextEle + i *2;
zig = true;
}
}
}
//This is to append the elements in the last row.
next = numRows - 1;
while(next < length){
result.append(sToArray[next]);
next = next + 2*(numRows - 1);
}
return result.toString();
}
}
相关文章推荐
- Android模拟文件上传---------------找不到错误
- YTU 1012: A MST Problem
- Father Christmas flymouse--POJ3160Tarjan
- 【分享】性能比肩美拍秒拍的Android视频录制编辑特效解决方案
- 在Microsoft-IIS/10.0上面部署mvc站点的时候,出现404的错误
- Father Christmas flymouse--POJ3160Tarjan
- 关于自定义函数与静态库中函数重名不报错问题的解决
- 视频格式转化(将MP4格式转换成ogg格式)
- HDU 5614 Baby Ming and Matrix tree(树链剖分+线段树)
- Qwt6.1.2在windows和ubuntu上的安装配置
- 201601241116_《Javascript优化(css,dom,loop)》
- java反射详解
- 第九章 虚拟存储器
- C#超级有用的一种类型—匿名类型
- wordpress禁用scandir引起的错误
- How to building OpenSSL 0.9.8c
- pcl 1.8.0(2) eigen 编译
- RFM模型及其用户运营实践
- 什么是XML?
- python 11期 第六天