LeetCode 6. Z字形变换

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/zigzag-conversion

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

找规律

思路:字符串下标如下图所示,第一行和最后一行看成一个等差数列,其余行看成两个等差数列交替出现,公差都为 2 * (numRows - 1)

class Solution {
     
public:
    string convert(string s, int numRows) {
     
        string ans;
        if(numRows == 1)    return s;           // 特判
        for(int i = 0; i < numRows; i++) {
     
            if(i == 0 || i == numRows - 1) {
     
                for(int j = i; j < s.length(); j += 2 * numRows - 2) ans += s[j];
            }
            else {
     
                for(int j = i, k = 2 * numRows - 2 - i; j < s.length() || k < s.length(); j += 2 * numRows - 2, k += 2 * numRows - 2) {
     
                    if(j < s.length())  ans += s[j];
                    if(k < s.length())  ans += s[k];
                }
            }
        }
        return ans;
    }
};

你可能感兴趣的:(LeetCode)