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];
}
};