Simple Java Solution:
class Solution {
public String[] reorderLogFiles(String[] logs) {
String[] answer = new String[logs.length];
List<String> digits = new ArrayList<>();
Queue<LetterLog> pq = new PriorityQueue<>((a, b) -> {
if (!a.content.equals(b.content)) {
return a.content.compareTo(b.content);
}
return a.identifier.compareTo(b.identifier);
});
for (int i = 0; i < logs.length; i++) {
String log = logs[i];
String[] logArray = log.split(" ");
if(logArray[1].charAt(0) < 'a') {
digits.add(log);
} else {
pq.add(new LetterLog(log));
}
}
int counter = 0;
while (!pq.isEmpty()) {
LetterLog letterLog = pq.poll();
answer[counter] = letterLog.full;
counter++;
}
for (String digitLog : digits) {
answer[counter] = digitLog;
counter++;
}
return answer;
}
}
class LetterLog {
public String identifier;
public String content;
public String full;
public LetterLog(String input) {
full = input;
identifier = input.substring(0, input.indexOf(" "));
content = input.substring(input.indexOf(" ") + 1);
}
}