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 RAnd 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".其实就是找规律
1 7 2 6 8 3 5 9 4 10
1 7 132 6 8 12 143 5 9 11 154 10 16
当行数i不在1和n时,就需要加上中间行的值,当i=2时 2 6 8 12 14中间是 6 12
code:
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){//except the first row and the last row
int temp = j+size-2*i;
if(temp<s.length())
res.append(s.charAt(temp));
}
}
}
return res.toString();
}
本文介绍了一种将字符串以Z形模式排列并按行读取的方法。通过编程实现了一个函数,该函数接受一个字符串和行数作为输入,并返回按Z形模式排列后的字符串。文章详细解释了实现过程及代码逻辑。
1059

被折叠的 条评论
为什么被折叠?



