【题目】
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"
【代码】
class Solution {
public:
string convert(string s, int nRows) {
string objStr="";
int slen=s.length();
if((slen<=0)||(nRows<=0)){
return objStr;
}
else if((1==slen)||(1==nRows)){
return s;
}
int num=slen/(2*nRows-2);
for(int i=0;i<nRows;++i){
for(int j=0;j<=(num+1);++j){
int index1=i+2*(nRows-1)*j;
if(index1<slen){
objStr+=s[index1];
}
if((0==i)||((nRows-1)==i)){
continue;
}
int index2=index1+2*(nRows-i-1);
if(index2<slen){
objStr+=s[index2];
}
}
}
return objStr;
}
};
【总结】
找出下标的规律。
注意入参合法性判定和边界条件。