LeetCode 1360. 日期之间隔几天

请你编写一个程序来计算两个日期之间隔了多少天。

日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。

示例 1:

输入:date1 = "2019-06-29", date2 = "2019-06-30"
输出:1
示例 2:

输入:date1 = "2020-01-15", date2 = "2019-12-31"
输出:15
链接:🔗

计算天数:  采用8位数循环的方式,通过判断该天是不是一个合理的天数而得到日期差
class Solution {
public:
    
    int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    
    bool isvalid(int d){
        int day = d % 100;
        d /= 100;
        int month = d % 100;
        if(month <= 0 || month > 12) return false;
        int year = d/100;
        int leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        if (month == 2){
            if (day > 0 && day <= months[month - 1] + leap)
                return true;
        }else{
            if (day > 0 && day <= months[month - 1])
                return true;
        }
        return false;
    }
    
    int daysBetweenDates(string date1, string date2) {
        
        int d1 = 0,d2 = 0;
        for (auto c:date1){
            if (c != '-')
                d1 = d1 * 10 + c - '0';
        }
        
        for (auto c:date2){
            if (c != '-')
                d2 = d2 * 10 + c - '0';
        }
        
        if (d1 > d2){
            int temp = d2;
            d2 = d1;
            d1 = temp;
        }
        
        int ans = 0;
        for (int i = d1 + 1 ; i <= d2; ++i){
            if (isvalid(i))
                ans++;
        }
        return ans;
    }
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值