class Solution {
public:
string convert(string s, int numRows) {
if(s.size() == 1 || numRows == 1){
return s;
}
int len = s.size();
int index = 0;
string result;
for(int i=0; i<numRows; i++){
if(i == 0){
index = i;
while(index < len){
result.push_back(s[index]);
index += 2*numRows - 2;
}
}
else if(i == numRows - 1){
index = i;
while(index < len){
result.push_back(s[index]);
index += 2*numRows - 2;
}
}
else{
index = i;
result.push_back(s[index]);
index += 2*numRows - 2;
while(index < len){
result.push_back(s[index - 2*i]);
result.push_back(s[index]);
index += 2*numRows - 2;
}
int temp = index - 2*i;
if(temp < len){
result.push_back(s[index - 2*i]);
}
}
}
return result;
}
};
分成三种情况讨论,第一行和最后一行,还有中间的行,每一列的字符下标相差为2*numRows-2