One Leetcode per day-937. Rearrange log files【Sort】

Insert picture description here

class Solution {
    
    
    public String[] reorderLogFiles(String[] logs) {
    
    
        Arrays.sort(logs,(log1,log2) -> {
    
    
            // 对于任意一对日志(log1,log2)

            // 每个log按空格拆分为两个字符串存入数组
            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));
            // 如果均为字母日志,比较大小
            if(!isDigit1 && !isDigit2){
    
    
                int cmp = split1[1].compareTo(split2[1]);
                // 两个字符串不相等,排序
                if(cmp != 0) return cmp;
                // 两个字符串相等,比较标识符
                return split1[0].compareTo(split2[0]);
            }
            // 否则看是数字日志还是字母日志,如果都是数字日志,就是按照原来的顺序吧,数字日志要在字母日志之前
            return isDigit1 ? (isDigit2 ? 0:1):-1;
        });
        return logs;
    }
}

Guess you like

Origin blog.csdn.net/weixin_41041275/article/details/111881687