您的位置:首页 > 编程语言 > Java开发

【Leetcode】zigzagConversion JAVA

2014-11-09 20:37 337 查看
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"
.

For the record...what if 4 and 5:

n=4

P
I
N

A
L S
I G

Y A
H
R

P
I

N=5

P
H

A
S I

Y
I
R

P L
I
G

A
N

//P              I              N
//A         L  S         I   G
//Y   A       H    R
//P              I

public class zigzagConversion {
public static void main(String args[]){
zigzagConversion zz = new zigzagConversion();
System.out.println(zz.convert("paypalishiring",4));
}
public String convert(String s, int nRows) {
if(s == null || s.length()==0 || nRows <=0)
return "";
if(nRows == 1)
return s;
StringBuilder res = new StringBuilder();
int size = 2*nRows-2;
for(int i=0;i<nRows;i++)
{
for(int j=i;j<s.length();j+=size)
{
res.append(s.charAt(j));
if(i!=0 && i!=nRows-1 && j+size-2*i<s.length())
{
System.out.println("size:"+size+" i:"+i+" j:"+j+" is "+s.charAt(j+size-2*i));
res.append(s.charAt(j+size-2*i));
}
}
}
return res.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: