跨年之夜,做一道日历题
题目描述:
给你一个字符串?date
?,按?YYYY-MM-DD
?格式表示一个?现行公元纪年法?日期。返回该日期是当年的第几天。
示例 1:
输入:date = "2019-01-09" 输出:9 解释:给定日期是2019年的第九天。
示例 2:
输入:date = "2019-02-10" 输出:41
思路:先把字符串中的年月日取出来并转化成整形
这里使用了string类中的substr函数,第一个参数表示从第几位开始取,第二个参数表示取几位
取出年月日之后,用一个数组存每一个月的天数(这里我们选择开大小为13的,第一个索引为0的位置存0,这样月份就和索引一一对应了)。接着判断是否为闰年,若为闰年则二月份对应的数组元素加1,为29天。接着就是循环遍历轻松解决了
代码实现:
class Solution {
public:
int dayOfYear(string date) {
int year=stoi(date.substr(0,4));
int month=stoi(date.substr(5,2));
int day=stoi(date.substr(8,2));
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int ans=0;
if(year%400==0||year%4==0&&year%100!=0)
{
months[2]++;
}
for(int i=1;i<month;i++)
{
ans+=months[i];
}
ans+=day;
return ans;
}
};
2023年最后一篇博客,祝所有看到这篇博客的人2024好运爆棚
荏苒时光酿成甘酒,愿一切努力终有所得