您的位置:首页 > 其它

ZigZag Conversion

2017-05-16 17:01 141 查看
leetcode中的曲折转换问题

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"
.

代码如下:

public class ZigZagConversion {

public String convert(String s, int nRows){
char[] c = s.toCharArray();
int len = c.length;
StringBuffer[] sb = new StringBuffer[nRows];

for(int i = 0; i < sb.length; i++)
sb[i] = new StringBuffer();

int i = 0;
while(i < len){
//垂直向下
for(int idx = 0; idx < nRows && i < len; idx++){
sb[idx].append(c[i++]);
}
//斜向上
for(int idx = nRows - 2; idx >= 1 && i < len; idx--){
sb[idx].append(c[i++]);
}
}

//组合成一个string
for(int idx = 1;idx < sb.length; idx++){
sb[0].append(sb[idx]);
}

return sb[0].toString();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Zigzag Conversion