您好,欢迎来到年旅网。
搜索
您的当前位置:首页LeetCode:1185. 一周中的第几天

LeetCode:1185. 一周中的第几天

来源:年旅网

题目描述

给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。

输入为三个整数:day、month 和 year,分别表示日、月、年。

您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}。

思路

使用 蔡勒公式!!!!! 即可快速解决。
对蔡勒公式不太熟悉的,可以翻阅百度百科:

变量说明

使用蔡勒公式

  1. 将正常的year、month、day格式化
  2. 如果月份 <= 2 需将 年、月格式化 。如:if(month <= 2) { year -= 1 ; month += 12 }
  3. 格式世纪数 c = y / 100
  4. 计算:w = (c / 4) - (2 * c) + y + y / 4 + ( 26 * (month + 1) / 10) + day - 1
  5. 将 w 取余计算出,是 7 的多少倍、余多少。由于考虑到负数,一般统一解决 ( w % 7 + 7 )% 7
  6. 将 w 转化为具体的星期数(0 - 星期天,1 - 星期一,… ,5 - 星期五,6 - 星期六)

代码

class Solution {
    static String[] week = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    public String dayOfTheWeek(int day, int month, int year) {
        // 格式化
        if (month < 3) {
            year -= 1;
            month += 12;
        }
        int c = year / 100;
        int y = year - 100 * c;
        int w = c / 4 - 2 * c + y + y / 4 + (26 * (month + 1) / 10) + day - 1;	// 蔡勒公式
        w = (w % 7 + 7) % 7;		// 避免正负数情况
        return week[w];
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务