LeetCode-in-Java

1507. Reformat Date

Easy

Given a date string in the form Day Month Year, where:

Convert the date string to the format YYYY-MM-DD, where:

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:

Solution

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public String reformatDate(String date) {
        StringBuilder sb = new StringBuilder();
        Map<String, String> map = new HashMap<>();
        map.put("Jan", "01");
        map.put("Feb", "02");
        map.put("Mar", "03");
        map.put("Apr", "04");
        map.put("May", "05");
        map.put("Jun", "06");
        map.put("Jul", "07");
        map.put("Aug", "08");
        map.put("Sep", "09");
        map.put("Oct", "10");
        map.put("Nov", "11");
        map.put("Dec", "12");
        sb.append(date.substring(date.length() - 4));
        sb.append('-');
        sb.append(map.get(date.substring(date.length() - 8, date.length() - 5)));
        sb.append('-');
        if (Character.isDigit(date.charAt(1))) {
            sb.append(date, 0, 2);
        } else {
            sb.append('0');
            sb.append(date.charAt(0));
        }
        return sb.toString();
    }
}