1154——一年中的第几天——简单

在这里插入图片描述
在这里插入图片描述
这道题完全可以看成是一个简单的加减算术题。
只是有两个需要处理的地方:

  1. 需要把输入的字符串转换成整数形式
  2. 关于闰年的二月比平年的二月多一天
    将字符串转换成整数,如果是python的话,直接用int()就好,但是C++只能自己手动转换了,不过过程还是非常简单的。那月份举例:month = (data[i] - '0') * 10 + (date[i+1] - '0')
    再来分析平闰年,闰年就是可以直接被400整除的年份,或者是可以被4整除但不能被100整除的年份,即 year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
class Solution {
public:
    int dayOfYear(string s) { //原数据为date,但我为了简略,将date改为了s
        int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//将每个月的天数存放在数组方便相加
        int year = 0, mon = 0, day = 0,sum = 0;
        year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0');
        mon = (s[5] - '0') * 10 + (s[6] - '0');
        day = (s[8] - '0') * 10 + (s[9] - '0');
        
        for(int i = 1; i < mon; ++ i) {
            sum += days[i];
            if(i == 2) {
                if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) sum ++;
            } 
        }
        sum += day;
        return sum;
    }
};

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿扬来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值