这是代码
class Solution {
public String[] reorderLogFiles(String[] logs) {
Arrays.sort(logs,(s1,s2) -> {
String[] split1 = s1.split(" ",2);
String[] split2 = s2.split(" ",2);
boolean isDigit1 = Character.isDigit(split1[1].charAt(0));
boolean isDigit2 = Character.isDigit(split2[1].charAt(0));
if(!isDigit1 && !isDigit2) {
// both letter-logs.
int comp = split1[1].compareTo(split2[1]);
if (comp == 0) return split1[0].compareTo(split2[0]);
else return comp;
} else if (isDigit1 && isDigit2) {
// both digit-logs. So keep them in original order
return 0;
} else if (isDigit1 && !isDigit2) {
// first is digit,second is letter. bring letter to forward.
return 1;
} else {
//first is letter,second is digit. keep them in this order.
return -1;
}
});
return logs;
}
}
这是问题说明
您有一系列日志。每个日志都是用空格分隔的字符串。
对于每个日志,每个日志中的第一个单词都是字母数字标识符。然后,要么:
Each word after the identifier will consist only of lowercase letters,or;
Each word after the identifier will consist only of digits.
我们将这两种日志称为字母日志和数字日志。确保每个日志的标识符后至少有一个单词。
对日志重新排序,以使所有字母日志排在任何数字日志之前。字母日志按字典顺序忽略标识符,并在平局的情况下使用标识符。数字日志应按原始顺序放置。
返回日志的最终顺序。
示例1:
Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","dig1 8 1 5 1","dig2 3 6"]
我的查询
我不明白的是,返回0和返回-1之间的区别
在比较时,我以为-1不会改变两个对象的原始顺序,但是返回0却可以完成同样的事情。那么,实际区别是什么?谢谢