题目

image.png

解题代码

  1. class Solution {
  2. static String[] ss = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  3. static int[] nums = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  4. public String dayOfTheWeek(int day, int month, int year) {
  5. //1970 的最后一天(星期四)
  6. int ans = 4;
  7. for(int i = 1971; i < year; i++ ) {
  8. boolean isLeap = (i % 4 == 0 && i % 100 != 0 ) || i % 400 == 0;
  9. ans += isLeap ? 366 : 365;
  10. }
  11. for(int i = 1; i < month; i++ ) {
  12. ans += nums[i - 1];
  13. if(i == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
  14. ans++;
  15. }
  16. }
  17. ans += day;
  18. return ss[ans % 7];
  19. }
  20. }
  1. import java.util.Calendar;
  2. import java.util.Date;
  3. class Solution {
  4. public String dayOfTheWeek(int day, int month, int year) {
  5. String [] weeks = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  6. Calendar cal = Calendar.getInstance();
  7. cal.setTime(new Date(year-1900,month - 1, day));
  8. int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
  9. if(w < 0 ) w= 0;
  10. return weeks[w];
  11. }
  12. }