问题描述:
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 String convert(String s, int nRows) {
String answer = "" ;
if(nRows==1)
return s;
int times=0;
// System.out.println("s.length is "+ s.length());
for(int i=0;i<nRows;i++){
times=0;
while((i+times*(nRows-1))<s.length()){
answer=answer+s.charAt(i+times*(nRows-1));
//判断一下是否为首行或者尾行
if(i!=0&&i!=nRows-1){
//判断下 row+(times+1)*(row-1)-i 是否超过最大值
if(( (times+2)*(nRows-1)-i)<s.length()){
answer=answer+s.charAt((times+2)*(nRows-1)-i);
}
}
times++;
times++;
}
}
return answer;
}