题目描述
思路分析
模拟
第一行和最后一行必然在原字符串中等差均匀分布。
中间的行上的字符根据
z
z
z字形的不对称,需要分为两类,两类起点不同但递增的大小相同都是
2
∗
n
−
2
2*n-2
2∗n−2。
r
e
s
res
res分别判断加入这两类。
代码实现
class Solution {
public:
string convert(string s, int n) {
string res;
if(n==1) return s;
for(int i=0;i<n;i++){
if(i==0||i==n-1){
for(int j=i;j<s.size();j+=2*n-2) res+=s[j];
}
else{
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()) res+=s[j];
if(k<s.size()) res+=s[k];
}
}
}
return res;
}
};