Tarixi Yenidən Formatlaşdırın LeetCode Həll

Çətinlik səviyyəsi Asan
Tez-tez soruşulur alma Expedia Twilio
tiktok Walmart Qlobal texnologiyaBaxılıb 15

Problem bəyanat

Tarixi Yenidən Formatlaşdırın LeetCode Həlli – a date şəklində simli Day Month Year, harada:

  • Day komplektdə var {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}.
  • Month komplektdə var {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}.
  • Year üçündür [1900, 2100].

Tarix sətirini formata çevirin YYYY-MM-DD, harada:

  • YYYY 4 rəqəmli ili bildirir.
  • MM 2 rəqəmli ayı ifadə edir.
  • DD 2 rəqəmli günü bildirir.

Tarixi Yenidən Formatlaşdırın LeetCode Həll

misal

Test işi 1:

Input:

tarix = "20 oktyabr 2052"

Çıxış:

“2052-10-20”

Test işi 2:

Input:

tarix = "26 may 1960"

Çıxış:

“1960-05-26”

Yanaşma:

Boşluğa bölməklə asanlıqla çıxara biləcəyimiz 3 hissə var:

  • İl: artıq istədiyimiz formatda.
  • Ay: tərcüməyə ehtiyacı var sim ədədi təmsilə. a istifadə edə bilərik Map ki,.
  • Gün: bəziləri ilə qarışıqdır şəkilçilər (məs stnd). Biz sadəcə istifadə edənləri silə bilərik parseInt.

Bu, son nəticədir.

Ah, biz də əlavə etməliyik sıfır dolgu. Belə bir günümüz varsa 1, olmasını istəyirik 01.

Aşağıda addımlar var:

  1. İlk iki hərfdən yalnız rəqəmləri götürün, əgər bu bir hərfdirsə, 0 əlavə edin. Maksimum O(2) işləmə müddətində
  2. Ay nömrəsini almaq üçün O(1).
  3. İlin bütün son 4 rəqəmi.
  4. Bütün bunları sıra ilə əlavə edin və geri qaytarın.

Yenidən Format Tarixi Kodu

C ++ Proqramı

class Solution {
public:
    string reformatDate(string date) {
        string res;
        if(date.length()==13)
            res=date.substr(9,4)+'-'+ret(date.substr(5,3))+'-'+date.substr(0,2);
        else
            res=date.substr(8,4)+'-'+ret(date.substr(4,3))+'-'+'0'+date.substr(0,1);
        return res;
    }
    string ret(string s){
        if(s=="Jan")    return "01";
        else if(s=="Feb")   return "02";
        else if(s=="Mar")   return "03";
        else if(s=="Apr")   return "04";
        else if(s=="May")   return "05";
        else if(s=="Jun")   return "06";
        else if(s=="Jul")   return "07";
        else if(s=="Aug")   return "08";
        else if(s=="Sep")   return "09";
        else if(s=="Oct")   return "10";
        else if(s=="Nov")   return "11";
        else        return "12";
    }
};

Java Proqramı

class Solution {
    private static final Map<String, String> months = getMonths();
    public String reformatDate(String date) {
        String[] ss = date.split("\\s+");
        StringBuilder sb = new StringBuilder();
        sb.append(ss[2]).append("-");
        sb.append(months.get(ss[1])).append("-");
        sb.append(ss[0].length() == 3 ? ("0" + ss[0].substring(0, 1)) : ss[0].substring(0, 2));
        return sb.toString();
    }
    
    private static Map<String, String> getMonths(){
        Map<String, String> months = new HashMap<>();
        months.put("Jan", "01");
        months.put("Feb", "02");
        months.put("Mar", "03");
        months.put("Apr", "04");
        months.put("May", "05");
        months.put("Jun", "06");
        months.put("Jul", "07");
        months.put("Aug", "08");
        months.put("Sep", "09");
        months.put("Oct", "10");
        months.put("Nov", "11");
        months.put("Dec", "12");
        return months;
    }
}

Yenidən Format Tarixi LeetCode Həlli üçün Mürəkkəblik Təhlili

Zamanın mürəkkəbliyi: O(1), çünki biz sabit vaxtdan istifadə edirik.

Kosmik Mürəkkəblik: O(1), çünki biz sabit boşluqdan istifadə edirik.

Translate »