=================================================================

===================================================================
题目表达出的意思很明显:就是给你日期,让我们计算出这个日期对应的是星期几。
===================================================================
首先要知道1971年第一天是星期几,
通过查询日历得知 1971年第一天(1月1日)是星期五。【1970.12.31 为 星期四】
有人可能会有疑问:求这个第一天星期几,有什么意义?
你这么想 题目会给我们一个日期,其目的:是想让我们算出 所给 日期 是星期几。
日期范围:1971 ~ 2100年
重点就来了:既然知道了 日期底线:1971【准确来说是 1970.12.31】,那么,我可不可以这么去想,我先去得到底线日期是星期几,之后的天数就网上累加,每累加一次,星期加一,没问题吧?
由此引出我们解题的关键:我们只要计算 所给出年份 与底线 相差多少天。然后,把它加在底线的基础上。就可以得出我们的最终结果。
举个例子:
既然题目规定返回值 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}。
那么,我们就需要为返回值创建一个 字符数组,来存储返回值,到时候,根据结果返回对应的值。
假设这个数组为: String[] week = {“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”,“Sunday”};
然后,我们再 创建一个 days 来 记录 给出年份与底线 相差多少天。
假设 days 的结果为 1,即 year == 1971,mont == 1,day == 1。对应日期:星期五。
此时要返回值 就是星期五,再加上星期数组week。
那么返回:return week[(days + 3) % 7] ;理由如下:
当然,还有一些细节部分: 计算出所给日期 与底线的相差多少天,我们就需要考虑 所给日期 与 底线 中 有几个闰年,闰年比普通年份多出一天(2月多出的)。这一点请记住。
===================================================================
class Solution {
public String dayOfTheWeek(int day, int month, int year) {
String[] week = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday"};
// 1 ~ 11 月的天数
int[] monthDay = {31,28,31,30,31,30,31,31,30,31,30};
//年份与底线年份 相差天数
int days = 365*(year-1971) + (year - 1969)/4;
for(int i = 0; i < month -1;i++){// 加上日期年的月份天数
days += monthDay[i];
}
if( (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) && month >2){
days += 1;// 如果 日期年 是闰年,且日期月份 大于 2月,所以它的天数要加1
}
days += day;// 再加上日期月份零碎的几天
return week[(days+3) % 7];
}
}

===================================================================

最后
最后,强调几点:
- 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
- 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
- 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。
面试答案



里有答案详解,以及其他一些大厂面试题目。**
面试答案
[外链图片转存中…(img-u21l7GUT-1714412645654)]
[外链图片转存中…(img-UCuZXq0B-1714412645655)]
[外链图片转存中…(img-cZPZzjh4-1714412645655)]
编程解题:计算任意日期对应的星期几,
文章讲述了如何通过编程方法计算给定日期对应的星期,利用1971年1月1日作为基准,通过计算与基准的天数差并考虑闰年调整,实现一个简单的Java解决方案。


5万+

被折叠的 条评论
为什么被折叠?



