Leetcode每日一题:1154.一年中的第几天

2024-01-01 18:19:43

跨年之夜,做一道日历题

题目描述:

给你一个字符串?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好运爆棚

荏苒时光酿成甘酒,愿一切努力终有所得

文章来源:https://blog.csdn.net/m0_73865858/article/details/135314900
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。