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"
.
Subscribe to see which companies asked this question.
Z字型打印。
public class Solution {
public String convert(String s, int numRows) {
int len = s.length();
if (len<=numRows||numRows==1){
return s;
}
int f = 0;
StringBuilder ans = new StringBuilder();
for(int j=0;j<numRows;j++){
int l = 0;
for(int i=j;i<len;i+=(f==0?2*(numRows-j-1):2*j)){
ans.append(s.charAt(i));
if(j!=0&&j!=numRows-1){
f = 1 - f;
}
if(l==0){
f = 0;
l = 1;
}
if(j==numRows-1){
f = 1;
l = 1;
}
if(ans.length()==s.length()){
break;
}
}
}
return ans.toString();
}
}tips:一定记得用StringBuilder! 相同的程序,使用String耗时128ms,stringbuilder加速一倍以上
本文介绍了一种将字符串以Z字形方式分布在多行上的算法,并提供了完整的Java代码实现。该算法通过调整行数和字符位置来实现字符串的转换。
531

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



