您的位置:首页 > 其它

Leetcode ZigZag Conversion

2016-07-06 00:53 447 查看
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"
.
Difficulty: Easy

public class Solution {
public String convert(String s, int numRows) {
if(s.length() <= numRows || numRows == 1) return s;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < numRows; i++){
if(i == 0 || i == numRows - 1){
int j = i;
while(j < s.length()){
sb.append(s.charAt(j));
j += numRows + numRows - 2;
}
}
else{
int j = i;
while(j < s.length()){
sb.append(s.charAt(j));
j += 2 * (numRows - 1 - (j % (2*numRows - 2)));
if(j >= s.length())
break;
sb.append(s.charAt(j));
j += 2 * (2 * numRows - 2 - (j % (2*numRows - 2)));
}

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