跳至正文

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

1154. 一年中的第几天

给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。

通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。

public class Solution {
    public int DayOfYear(string date) {
        string[] time = date.Split('-');
        int ans = 0;
        int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        for(int i=0; i<(int.Parse(time[1])); i++)
        {
            ans += days[i];
        }
        ans += int.Parse(time[2]);
        if( IsLeap(int.Parse(time[0])) && (int.Parse(time[1]))>2)
        {
            ans++;
        }
        return ans;
    }

    public bool IsLeap(int year)
    {
        if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        {
            return true;
        }
        return false;
    }
}

这题还真是要素齐全

不过难得冬至来了道简单题

首先是数据读取

我这里直接拆分了导致后面每个都要强转

看了题解才想起来直接截取就行了

然后是年份

年份要分为平年和闰年

平年里还要注意世纪年如2000

因为2月的天数是会变化的所以要判断闰年

在这里复习一下判断闰年的标准

如果是世纪年那么判断能否被400整除,能就是闰年

如果是一般年份判断能被4整除并且不能被100整除

然后判断完天数加1

我们直接用个数组记下来一般年份的天数

假如是2012 – 03 – 09

那么天数就得是1月的天数+2月的天数+9天+闰年多的1天

所以遍历到3-1月就可以了

发表评论

您的电子邮箱地址不会被公开。