LeetCode 5169. 日期之间隔几天(闰年判断)

Lark ·
更新时间:2024-11-11
· 890 次阅读

1. 题目

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

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

示例 1: 输入:date1 = "2019-06-29", date2 = "2019-06-30" 输出:1 示例 2: 输入:date1 = "2020-01-15", date2 = "2019-12-31" 输出:15 提示: 给定的日期是 1971 年到 2100 年之间的有效日期。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-days-between-two-dates
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题 闰年判断条件:被4整除但不能被100,或者能被400整除 (year%4 == 0 && year%100 != 0) || year%400 == 0 是闰年 class Solution { vector month = {0,31,28,31,30,31,30,31,31,30,31,30,31}; public: int daysBetweenDates(string date1, string date2) { if(date1 == date2) return 0; if(date1 > date2) swap(date1, date2); int days = 0, y1, m1, d1, y2, m2, d2, i; y1 = (date1[0]-'0')*1000+(date1[1]-'0')*100+(date1[2]-'0')*10+date1[3]-'0'; m1 = (date1[5]-'0')*10+date1[6]-'0'; d1 = (date1[8]-'0')*10+date1[9]-'0'; y2 = (date2[0]-'0')*1000+(date2[1]-'0')*100+(date2[2]-'0')*10+date2[3]-'0'; m2 = (date2[5]-'0')*10+date2[6]-'0'; d2 = (date2[8]-'0')*10+date2[9]-'0'; for(i = 1; i 2) days--;//闰年2月29天 days -= d1; for(i = y1; i < y2; ++i) days += isleapyear(i) ? 366 : 365; for(i = 1; i 2) days++; days += d2; return days; } bool isleapyear(int& year) { if((year%4 == 0 && year%100 != 0) || year%400 == 0) return true; return false; } };

在这里插入图片描述


作者:Michael阿明



闰年 leetcode

需要 登录 后方可回复, 如果你还没有账号请 注册新账号