Вот код
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;
}
}
Это постановка задачи
У вас есть массив журналов. Каждый журнал представляет собой строку слов, разделенную пробелом.
Для каждого журнала первое слово в каждом журнале представляет собой алфавитный идентификатор c. Затем либо:
Each word after the identifier will consist only of lowercase letters, or;
Each word after the identifier will consist only of digits.
Мы назовем эти две разновидности журналов буквами-логами и ди git -логами. Гарантируется, что в каждом журнале есть хотя бы одно слово после идентификатора.
Переупорядочьте журналы так, чтобы все журналы писем предшествовали любому журналу di git. Буквенные журналы упорядочены лексикографически, игнорируя идентификатор, с идентификатором, используемым в случае связей. Di git -логи должны быть помещены в их первоначальном порядке.
Возвращает окончательный порядок журналов.
Пример 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","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
Мой запрос
Я не понимаю, что разница между возвратом 0 и возвратом -1
То, что я считал -1, не меняет первоначальный порядок двух объектов при сравнении, но возвращение 0 делает то же самое. Так в чем же разница? Спасибо