第一行和最后一行只有一个等差数列;
- 第一行: 0 6 12 18
- 最后一行:3 9 15
中间行有两个等差数列:
- 1 7 13
- 5 11 ...
代码:
class Solution {
public:
string convert(string s, int numRows) {
string res;
//特判一下numRows是不是1 如果是1 直接返回原字符
if(numRows==1) return s;
for(int i=0;i<numRows;i++){
//如果是第一行或者最后一行 那么只有一个等差数列
if(i==0||i==numRows-1) {
for(int j=i;j<s.size();j+=2*numRows-2){
res+=s[j];
}
}
else{
//中间的等差有两个
for(int j=i,k=2*numRows-2-i;j<s.size()||k<s.size();j+=2*numRows-2,k+=2*numRows-2){
if(j<s.size()) res+=s[j];
if(k<s.size()) res+=s[k];
}
}
}
return res;
}
};
评论区