https://leetcode.cn/problems/zigzag-conversion/description/
找规律:
i为第一个元素,2n-2为公差的等差数列i为第一个元素,2n-2为公差的等差数列2n-i-2为第一个元素,2n-2为公差的等差数列需要注意的是当n为1时,公差2n-2会变为0, 会出现死循环
for (int k = i, j = (2 * n - i - 2);
k < s.size() || j < s.size();
k += (2 * n - 2),j += (2 * n - 2))
class Solution {
public:
string convert(string s, int n) {
if (n == 1) return s;
string res;
// i代表行数
for (int i = 0; i < n; i ++){
if (i == 0 || i == n - 1){
for (int k = i; k < s.size(); k += (2 * n - 2)){
res += s[k];
}
}
else{
for (int k = i, j = (2 * n - i - 2); k < s.size() || j < s.size(); k += (2 * n - 2),j += (2 * n - 2)){
if (k < s.size()) res += s[k];
if (j < s.size()) res += s[j];
}
}
}
return res;
}
};