🍋1.一周中的第几天
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:day、month 和 year,分别表示日、月、年。
您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。
题目链接:一周中的星期几https://leetcode-cn.com/problems/day-of-the-week/
这道题目的要求很简单,只是为了求出某一天是星期几。虽然要求简单,但是考虑的因素却很多,要考虑闰年还要考虑到每个月份的天数都不同,而且你不知道从哪一天开始推算起来,所以在我看来虽然是简单题,还是非常让人感觉头疼的,而且是非常抽象的一道题目。这里Java的同学们一定要学会Calendar这个日期API,你可以给它设置某年某月某日,然后它能返回一个int类型的值告诉你是星期几。但是要注意从1开始是星期日直到7是星期六,而且我们在设置月份的时候,从0开始是1月,直到数字11才是12月。这是我们特别特别需要注意的地方,有兴趣的同学可以去观看一下Calendar的源码。
//这个类在力扣中需要导包 import java.util.Calendar; class Solution { public String dayOfTheWeek(int day, int month, int year) { //Calendar的实体类获取方式 Calendar calendar = Calendar.getInstance(); //设置年份 calendar.set(Calendar.YEAR,year); //0开始算1月,所以参数要减1 0——11代表1月到12月 calendar.set(Calendar.MONTH,month-1); //设置日 calendar.set(Calendar.DAY_OF_MONTH,day); //获得返回值可以知道是星期几,1——7分别代表为星期天到星期六 int x=calendar.get(Calendar.DAY_OF_WEEK); //根据x的值返回结果 switch(x){ case 1: return "Sunday"; case 2: return "Monday"; case 3: return "Tuesday"; case 4: return "Wednesday"; case 5: return "Thursday"; case 6: return "Friday"; default: return "Saturday"; } } }
使用Calendar解题还是非常方便的,蓝桥中也考过类似的真题,在这个蓝桥真题解第一题就是——蓝桥真题1。常规的解题方法还是非常掉头发的,建议大家掌握一下这个CalendarAPI。