zoukankan      html  css  js  c++  java
  • leetcode每日刷题计划--day60

    Num 6 Z字形变换

    注意点:

      1、空和1需要特判

      2、斜着的是反的,越往上编号越大

      3、可能会出现long和short不满的情况,每行写的时候注意,要带着判断

      4、longs和shorts分别代表竖行和横行数数量

    class Solution {
    public:
        string convert(string s, int numRows) {
            if(numRows==1) return s;
            int len=s.length();
            int longs,shorts;
            int temp=len%(2*numRows-2);
            //cout<<"temp:"<<temp<<endl;
            if(temp<=numRows)
            {
                if(temp==0)
                {
                    longs=len/(2*numRows-2);
                    shorts=len/(2*numRows-2);
                }
                else
                {
                    longs=len/(2*numRows-2)+1;
                    shorts=len/(2*numRows-2);
                }
            }
            else{
                longs=len/(2*numRows-2)+1;
                shorts=len/(2*numRows-2)+1;
            }
            //cout<<"longs:"<<longs<<"shorts:"<<shorts<<endl;
            string ans;
            for(int i=0;i<numRows;i++)
            {
                if(i==0||i==numRows-1){
                    for(int j=0;j<longs;j++)
                    {
                        if(((2*numRows-2)*j+i)<len)
                        ans.push_back(s[(2*numRows-2)*j+i]);
                    }
                }
                else
                {
                    for(int j=0;j<longs;j++)
                    {
                        //cout<<"J:"<<j<<" "<<s[(2*numRows-2)*j+i]<<endl;
                        if(((2*numRows-2)*j+i)<len)
                            ans.push_back(s[(2*numRows-2)*j+i]);
                        if(j<shorts && ((2*numRows-2)*j+(2*numRows-i-2))<len)
                            ans.push_back(s[(2*numRows-2)*j+(2*numRows-i-2)]);
                    }
                }
            }
            return ans;
        }
    };
    View Code

     这个题还有一个方法是每一行开一个数组,然后根据遍历加内容,看了一下应该不如现在的方法,不写了。

    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    np.max 与 np.maximum
    套路、逻辑与思辨(道理的论证)
    套路、逻辑与思辨(道理的论证)
    拉普拉斯方程与复微分
    拉普拉斯方程与复微分
    计算机辅助解题
    计算机辅助解题
    使用Opencv中均值漂移meanShift跟踪移动目标
    密室问题
    各种机械键盘轴的差别,究竟什么轴好
  • 原文地址:https://www.cnblogs.com/tingxilin/p/11927620.html
Copyright © 2011-2022 走看看