在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a date, return the corresponding day of the week for that date. The input is given as three integers representing the Return the answer as one of the following values
Example 1: Input: day = 31, month = 8, year = 2019 Output: "Saturday" Example 2: Input: day = 18, month = 7, year = 1999 Output: "Sunday" Example 3: Input: day = 15, month = 8, year = 1993 Output: "Sunday"
Constraints:
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数: 您返回的结果必须是这几个值中的一个
示例 1: 输入:day = 31, month = 8, year = 2019 输出:"Saturday" 示例 2: 输入:day = 18, month = 7, year = 1999 输出:"Sunday" 示例 3: 输入:day = 15, month = 8, year = 1993 输出:"Sunday"
提示:
Runtime: 0 ms
Memory Usage: 20.5 MB
1 class Solution { 2 let S:[String] = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 3 func dayOfTheWeek(_ day: Int, _ month: Int, _ year: Int) -> String { 4 var month = month 5 var year = year 6 if month < 3 7 { 8 year -= 1 9 month += 12 10 } 11 let w:Int = (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7 12 return S[w] 13 } 14 } 0ms
1 class Solution { 2 func dayOfTheWeek(_ day: Int, _ month: Int, _ year: Int) -> String { 3 let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 4 let days = ["Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"] 5 var res = 0 6 for y in stride(from: 1972, to: year, by: 4) { 7 res += 1 8 } 9 if year % 4 == 0 && year != 2100 && month > 2 { 10 res += 1 11 } 12 res += (year - 1971) * 365 13 for m in 1..<month { 14 res += months[m - 1] 15 } 16 res += (day - 1) 17 res %= 7 18 return days[res] 19 } 20 } 4ms 1 class Solution { 2 func dayOfTheWeek(_ day: Int, _ month: Int, _ year: Int) -> String { 3 guard day >= 1 && day <= 31 && month >= 1 && month <= 12 && year >= 1971 && year <= 2100 else { 4 return "" 5 } 6 7 func isLeapYear(_ year: Int) -> Bool { 8 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) 9 } 10 11 // 1971-1-1 => Friday 12 let weekName = ["Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"] 13 // Days to 01-01, leadYear 14 let monthDays = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335] 15 var days = 0 16 17 for y in 1971 ..< year { 18 days += (isLeapYear(y) ? 366 : 365) 19 } 20 21 if month < 3 { 22 days += monthDays[month - 1] + day - 1 23 } 24 else { 25 days += (monthDays[month - 1] + (isLeapYear(year) ? 0 : -1) + day - 1) 26 } 27 28 return weekName[days % 7] 29 } 30 } 8ms 1 class Solution { 2 func dayOfTheWeek(_ day: Int, _ month: Int, _ year: Int) -> String { 3 let formatter = DateFormatter() 4 formatter.dateFormat = "yyyy-MM-dd" 5 let date = formatter.date(from: "\(year)-\(month)-\(day)") 6 let myCalendar = Calendar(identifier: .gregorian) 7 let weekDay = myCalendar.component(.weekday, from: date!) 8 9 return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][weekDay - 1] 10 } 11 }
|
请发表评论