Log Files-da verilənləri yenidən sıralayın LeetCode Solution

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon Audible googleBaxılıb 18

Problem bəyanat

Log Files məlumatlarını yenidən sıralayın LeetCode Solution – Sizə bir sıra verilir logs. Hər bir jurnal boşluqla ayrılmış sözlər sətridir, burada ilk söz sözdür identifikatoru.

İki növ log var:

  • Məktub jurnalları: Bütün sözlər (identifikatordan başqa) kiçik ingilis hərflərindən ibarətdir.
  • Rəqəm jurnalları: Bütün sözlər (identifikatordan başqa) rəqəmlərdən ibarətdir.

Bu qeydləri yenidən sıralayın:

  1. The məktub jurnalları hamıdan əvvəl gəl rəqəm jurnalları.
  2. The məktub jurnalları məzmununa görə leksikoqrafik sıralanır. Əgər onların məzmunu eynidirsə, onları identifikatorlarına görə leksikoqrafik olaraq sıralayın.
  3. The rəqəm jurnalları onların nisbi nizamını qoruyurlar.

Qayıtmaq logların son sırası.

Log Files-da verilənləri yenidən sıralayın LeetCode Solution

misal

Test işi 1:

Input:

logs = [“dig1 8 1 5 1″,”1 art can”,”dig2 3 6″,”let2 own kit dig”,”let3 art zero”]

Çıxış:

[“1 art can”,”let3 art zero”,”2 own kit dig”,”dig1 8 1 5 1″,”dig2 3 6″]

Explanation:

Məktub jurnalının məzmunu fərqlidir, buna görə də onların sırası “art can”, “art zero”, “öz dəsti qazması”dır. Rəqəm jurnallarının nisbi sırası “dig1 8 1 5 1”, “dig2 3 6”dır.

Yanaşma:

  1. Birincisi, orijinal sıranı qoruyarkən bütün qazma jurnalını sonuna qədər köçürün.
  2. Qalan buraxılış jurnalını fərdiləşdirilmiş müqayisəçidən istifadə edərək çeşidləyin.

mənim həllim problemdə zəmanət verdiyimiz şeylərdən faydalanır:

  1. identifikatordan sonra sözün olması zəmanətlidir (mənə indexOf ' '-dən sərbəst istifadə etməyə imkan verir).
  2. məktub jurnalları sifariş edilməlidir leksikoqrafik cəhətdən, buna görə də ikimiz olduğunu bildiyimiz zaman daxili müqayisə funksiyasından istifadə edə bilərik.
  3. nömrə qeydləri təbii şəkildə çeşidlənməlidir, ona görə də biz sadəcə onların hamısının bir-birinə “bərabər” olduğunu deyirik və java-nın daxili çeşidləmə xüsusiyyətinin sabit olduğuna inanırıq.
  4. nömrə jurnalları hərf jurnallarından sonra olmalıdır, ona görə də onların fərqli olduğunu öyrəndikdən sonra digərindən birini qaytarırıq və qısaqapanırıq.

Günlük fayllarında məlumatların yenidən sıralanması üçün kod

Java Proqramı

class Solution {
    public String[] reorderLogFiles(String[] logs) {
        Comparator<String> myComp = new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                int s1SpaceIndex = s1.indexOf(' ');
                int s2SpaceIndex = s2.indexOf(' ');
                char s1FirstCharacter = s1.charAt(s1SpaceIndex+1);
                char s2FirstCharacter = s2.charAt(s2SpaceIndex+1);
                
                if (s1FirstCharacter <= '9') {
                    if (s2FirstCharacter <= '9') return 0;
                    else return 1;
                }
                if (s2FirstCharacter <= '9') return -1;
                
                int preCompute = s1.substring(s1SpaceIndex+1).compareTo(s2.substring(s2SpaceIndex+1));
                if (preCompute == 0) return s1.substring(0,s1SpaceIndex).compareTo(s2.substring(0,s2SpaceIndex));
                return preCompute;
            }
        };
        
        Arrays.sort(logs, myComp);
        return logs;
    }
}

C ++ Proqramı

class Solution {
public:
   static bool custsort(const string &A, const string& B){
    string sa = A.substr(A.find(' ') + 1);
    string sb = B.substr(B.find(' ') + 1);
    if(isdigit(sa[0]))
        return false;
    else if(isdigit(sb[0]))
        return true;
       else if(sa.compare(sb)==0){
           string fa=A.substr(0,A.find(' '));
           string fb = B.substr(0,B.find(' '));
           
           return fa.compare(fb)<0;
       }
    return sa.compare(sb) < 0;
}

vector<string> reorderLogFiles(vector<string> &logs) {
    stable_sort(logs.begin(), logs.end(), custsort);
    return logs;
    }
};

Log Files-da məlumatların yenidən sıralanması üçün mürəkkəbliyin təhlili LeetCode Solution

Zaman mürəkkəbliyiO(n*logn) massivi çeşidləyərkən.

Kosmik mürəkkəblikO(1) çünki biz heç bir əlavə yerdən istifadə etmirik.

Translate »