# leetcode 6. ZigZag Conversion

113人阅读 评论(0)

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

之字形转换,起初没搞清题意多测试几次后明白了,当nRows=4时,

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

public class A6ZigZagConversion {

public String convert(String s, int numRows) {
if("".equals(s) || s == null || numRows <= 1)
return s;
StringBuffer[] ans = new StringBuffer[numRows];
int i = 0, j;
for(; i < numRows; i++) {
ans[i] = new StringBuffer("");
}
i = 0;
while(i < s.length()) {
for(j = 0; i < s.length() && j < numRows; j++) {
ans[j].append(s.charAt(i++));
}
for(j = numRows - 2; i < s.length() && j > 0; j--) {
ans[j].append(s.charAt(i++));
}
}
for(i = 1; i < numRows; i++) {
ans[0].append(ans[i]);
}
return ans[0].toString();
}
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：24789次
• 积分：1154
• 等级：
• 排名：千里之外
• 原创：92篇
• 转载：11篇
• 译文：0篇
• 评论：4条
文章分类
阅读排行
最新评论