Solving Leetcode Interviews in Seconds with AI: Reformat Date
Introduction
In this blog post, we will explore how to solve the LeetCode problem "1507" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
Given a date string in the form Day Month Year, where: Day is in the set {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}. Month is in the set {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}. Year is in the range [1900, 2100]. Convert the date string to the format YYYY-MM-DD, where: YYYY denotes the 4 digit year. MM denotes the 2 digit month. DD denotes the 2 digit day. Example 1: Input: date = "20th Oct 2052" Output: "2052-10-20" Example 2: Input: date = "6th Jun 1933" Output: "1933-06-06" Example 3: Input: date = "26th May 1960" Output: "1960-05-26" Constraints: The given dates are guaranteed to be valid, so no error handling is necessary.
Explanation
- Parse the input string: Split the input date string into its day, month, and year components.
- Convert month and day: Use a dictionary to map month names to their corresponding numerical values. Extract the numerical value of the day by removing the suffix ("st", "nd", "rd", "th").
- Format the output: Construct the output string in the desired YYYY-MM-DD format using f-strings or string formatting.
- Runtime Complexity: O(1), because the operations are independent of the input size and the month mapping is of constant size. Storage Complexity: O(1), because the month mapping is of constant size and only a few variables are used.
Code
def reformatDate(date):
months = {
"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04",
"May": "05", "Jun": "06", "Jul": "07", "Aug": "08",
"Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12"
}
day, month, year = date.split()
day = day[:-2] # Remove "st", "nd", "rd", "th"
if len(day) == 1:
day = "0" + day
return f"{year}-{months[month]}-{day}"