LeetCode Daily 5


2022-1-4 T1185.一周中的第几天

  开心??Happy~

题目描述:

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

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

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

示例:

输入:day = 31, month = 8, year = 2019
输出:"Saturday"

代码:

class Solution {
public:
    string dayOfTheWeek(int day, int month, int year) {
    vector<string> ans {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        int res = 0;
        for(int i = 1971; i < year; i++) {
            if(isYear(i)) res += 365;
            else res += 366;
        }
        if(month > 2) {
            if(isYear(year)) res += sumDay(month) + day;
            else res += sumDay(month) + day + 1;
        }
        else{
            res += sumDay(month) + day;
        }
        return ans[(res + 4) % 7]; //1971-1-1是周四
    }

    bool isYear(int year) {
        if((year % 4 != 0) || (year % 100 == 0 && year % 400 != 0))
        return true;
        else return false;
    }

    int sumDay(int n) {
        vector<int> daynum {31,28,31,30,31,30,31,31,30,31,30,31};
        int res = 0;
        for(int i = 0; i < n - 1; i++) {
            res += daynum[i];
        }
        return res;
    }
};