给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:day
、month
和 year
,分别表示日、月、年。
您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
。
示例 1:
输入:day = 31, month = 8, year = 2019
输出:"Saturday"
示例 2:
输入:day = 18, month = 7, year = 1999
输出:"Sunday"
示例 3:
输入:day = 15, month = 8, year = 1993
输出:"Sunday"
代码:
class Solution {
public:
bool isLeapYear(int year)
{
return (year%4==0&&year%100!=0) || year % 400 == 0;
}
int getDays(int year, int month)
{
int days[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
if(month!=2) return days[month];
else
{
return isLeapYear(year) ? 29 : 28;
}
}
string dayOfTheWeek(int day, int month, int year) {
string weeks[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int y = 1971,m = 1,d = 1, week = 5;
while(y < year || m < month || d < day)
{
d++;
if(d > getDays(y, m))
{
d = 1;
m ++;
}
if(m > 12)
{
m = 1;
y ++;
}
week = (week+1) % 7;
}
return weeks[week];
}
};