leetcode每日一题 1185.一周中的第几天


  • 题目链接

一周中的第几天

  • 解题思路

可以通过模拟的算法,容易知道1971年的1月1日是星期五

计算从1971年1月1日到当前有几天即可

这个我们可以通过枚举每一年每一月得到

最后根据余数确定是星期几

注意一点就是闰年的判断

  • 代码
class Solution {
public:
    int month_day(int month,int year)
    {
        if(month == 2)
        {
        if(year % 400 == 0) return 29;
        else if(year % 100 == 0 && year % 400 != 0) return 28;
        else if(year % 4 == 0) return 29;
        else return 28;
        }
        else if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) return 31;
        else return 30;
    }
    string dayOfTheWeek(int day, int month, int year) 
    {
        int now = 3, allday = 0;
        for(int i = 1971;i < year; i++)
            for(int j = 1;j <= 12; j++)
                allday = allday + month_day(j,i);
        for(int j = 1;j < month; j++)
            allday = allday + month_day(j,year);
        allday = allday + day;
        now = (now + allday) % 7;
        string answer[] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
        return answer[now];
    }
};