题目描述:
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数: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”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/day-of-the-week
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
class Solution:
def dayOfTheWeek(self, day: int, month: int, year: int) -> str:
monthday={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
week={0:'Friday',1:'Saturday',2:'Sunday',3:'Monday',4:'Tuesday',5:'Wednesday',6:'Thursday',} #1971.1.1是星期五
days=0 #记录天数差
for index in range(1971,year):
if (index%4==0 and index%100!=0) or index%400==0:#闰年
days+=366
else:#平年
days+=365
if ((year%4==0 and year%100!=0) or year%400==0) and month>2:
days+=1
for index in range(1,month):
days+=monthday.get(index)
days+=day-1
return week.get(days%7)
思路:
我个人认为这个题目比上一次的那个题目稍微难一点,算是那个题目的延申。
首先确定好是平年还是闰年,之后确定1971.1.1是周五,然后只需要算出指定日期跟1971.1.1的天数差即可。