按行访问
class Solution {
public:
string convert(string s, int n) {
string ans;
if(n==1)return s; //特殊情况
for(int i=0;i<n;i++){
if(i==0 || i==n-1){ //仅有一个等差数列,公差为2*n-2
for(int j=i;j<s.size();j+=2*n-2){
ans+=s[j];
}
}else{ //有两个等差数列的情况,公差同样为2*n-2
for(int j=i,k=2*n-2-i;j<s.size() || k<s.size();j+=2*n-2,k+=2*n-2){
if(j<s.size())ans+=s[j];
if(k<s.size())ans+=s[k];
}
}
}
return ans;
}
};
//1.找规律、等差数列
//2.模拟