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;
}
}
One Leetcode per day-937. Rearrange log files【Sort】
Guess you like
Origin blog.csdn.net/weixin_41041275/article/details/111881687
Ranking