6-Z字形变换

6. Z 字形变换

  • 模拟遍历过程
    • 用一个flag记录当前是不是需要从上到下(从下到上)转换方向
    • 初始flag设为-1。记录好当前行后,判断是否需要更新flag
    • 如果行数为0或1,则直接返回
class Solution(object):
    def convert(self, s, numRows):
        if numRows < 2: return s #  如果行数为0或1,则直接返回.不要进入后面的for循环。否则i会越界
        res=["" for i in range(numRows)]
        i=0
        flag=-1
        for c in s:
            res[i]+=c
            if i==numRows-1 or i==0: flag=-flag
            i += flag
        return "".join(res)
class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows < 2) return s;
        vector <string> res;
        for (int i = 0; i < numRows; ++i) {
            res.push_back("");
        }
        int i = 0;
        int flag = -1;
        for (auto &c:s) {
            res[i] += c;
            if (i == 0 || i == numRows - 1) {
                flag = -flag;
            }
            i += flag;
        }

        string ans = "";
        for (auto &c:res) {
            ans += c;
        }
        return ans;
    }
};

   转载规则


《6-Z字形变换》 M 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
11-盛最多水的容器 11-盛最多水的容器
11. 盛最多水的容器 利用双指针,不断更新面积 决定面积大小的因素:两个柱子(指针)之间的距离以及两柱子的最低高度。所以面积表示为min(height[l],height[r])*(r-l) 如果低柱子不动,让高柱子的那一侧往里跳,(r
2021-09-02
下一篇 
32-最长有效括号 32-最长有效括号
32. 最长有效括号括号问题常常可以用栈来处理 stack idx ; // 如果是左括号,则左括号的索引入栈 vector v; // 记录全部有效括号的索引 如果当前为右括号,且栈顶有左括号,则记录栈顶左括号的索引和当前右括号的索
2021-08-30
  目录