Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Reformat Date

Updated
2 min read

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}"

More from this blog

C

Chatmagic blog

2894 posts