LeetCode 937. Reorder Data in Log Files

题目标签:String

  写一个comparator,先分离identifier 和 content,然后分情况比较:

    1. 两个 log 都是 letter logs,先比较 content,如果一样content 再比较 identifiers

    2. 一个letter log, 一个 digit log

    3. 两个都是 digit logs

  具体看code。

 

 

Java Solution: 

Runtime:  14ms, faster than 12.57% 

Memory Usage: 46.5MB, less than 5.13%

完成日期:01/26/2021

关键点:override compare

class Solution {
    public String[] reorderLogFiles(String[] logs) {

        Comparator<String> myComp = new Comparator<String>() {
            @Override
            public int compare(String log1, String log2) {
                // split each log into two parts: <identifier, content>
                String[] split1 = log1.split(" ", 2);
                String[] split2 = log2.split(" ", 2);

                boolean isDigit1 = Character.isDigit(split1[1].charAt(0));
                boolean isDigit2 = Character.isDigit(split2[1].charAt(0));

                // case 1). both logs are letter-logs
                if (!isDigit1 && !isDigit2) {
                    // first compare the content
                    int cmp = split1[1].compareTo(split2[1]);
                    if (cmp != 0)
                        return cmp;
                    // logs of same content, compare the identifiers
                    return split1[0].compareTo(split2[0]);
                }

                // case 2). one of logs is digit-log
                if (!isDigit1 && isDigit2)
                    // the letter-log comes before digit-logs
                    return -1;
                else if (isDigit1 && !isDigit2)
                    return 1;
                else
                    // case 3). both logs are digit-log
                    return 0;
            }
        };

        Arrays.sort(logs, myComp);
        return logs;
    }
}

参考资料:https://leetcode.com/problems/reorder-data-in-log-files/solution/

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2021-01-27 11:06  Jimmy_Cheng  阅读(70)  评论(0编辑  收藏  举报