Tue. Apr 23rd, 2024

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"
class Solution {
    public String reformatDate(String date) {
        String result = "";
        List<String> month_list = new ArrayList<String>();
        month_list.add("Jan");
        month_list.add("Feb");
        month_list.add("Mar");
        month_list.add("Apr");
        month_list.add("May");
        month_list.add("Jun");
        month_list.add("Jul");
        month_list.add("Aug");
        month_list.add("Sep");
        month_list.add("Oct");
        month_list.add("Nov");
        month_list.add("Dec");
        
        List<String> data = new ArrayList<String>();
        for(String token: date.split("\\s++")){
            data.add(token);
        }
        
        for(int i=2;i>=0;i--){
            if(i==2){
                result = data.get(i)+"-";
            }else if(i==1){
                String month = String.format("%02d" , month_list.indexOf(data.get(i))+1);
                result = result + month + "-";
            }else{
                int dte= Integer.parseInt(data.get(i).replaceAll("[^0-9]", ""));
                String dte_str = String.format("%02d" , dte);
                result = result + dte_str;
            }
        }
        return result;
    }
}