侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 6. Z 字形变换

Hope
2022-03-28 / 0 评论 / 0 点赞 / 335 阅读 / 494 字
温馨提示:
本文最后更新于 2022-03-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 6. Z 字形变换
思路:

image.png

第一行和最后一行只有一个等差数列;

  • 第一行: 0 6 12 18
  • 最后一行:3 9 15

中间行有两个等差数列:

  • 1 7 13
  • 5 11 ...

代码:


class Solution {
public:
    string convert(string s, int numRows) {
        string res;
        //特判一下numRows是不是1 如果是1 直接返回原字符
        if(numRows==1) return s;
        for(int i=0;i<numRows;i++){
            //如果是第一行或者最后一行 那么只有一个等差数列
            if(i==0||i==numRows-1) {
                for(int j=i;j<s.size();j+=2*numRows-2){
                    res+=s[j];
                }
            }
            else{
                //中间的等差有两个
                for(int j=i,k=2*numRows-2-i;j<s.size()||k<s.size();j+=2*numRows-2,k+=2*numRows-2){
                    if(j<s.size()) res+=s[j];
                    if(k<s.size()) res+=s[k];
                }
            }
        }
        return res;
    }
};
0

评论区