https://leetcode.com/problems/reorder-data-in-log-files/

class Solution {
    public String[] reorderLogFiles(String[] logs) {
        if(logs == null || logs.length == 0) return logs;
        
        boolean[] isLetterLog = new boolean[logs.length];
        int letterLogCount = 0;
        int count = 0;
        for(String log: logs) {
            if(!Character.isDigit(log.charAt(log.length()-1))){
                isLetterLog[count] = true;
                letterLogCount ++;
            }
            count ++;
        }
        
        String[] results = new String[logs.length];
        for(int i=0, j=0, k=letterLogCount; i< logs.length;i++){
            if(isLetterLog[i]) {
                results[j] = logs[i];
                j++;
            }
            else{
                results[k] = logs[i];
                k++;
            }
        }
       
        Arrays.sort(results, 0, letterLogCount,  new Comparator<String>(){
            public int compare(String s1, String s2) {
                int firstSpace1 = s1.indexOf(" ");
                String identifier1 = s1.substring(0, firstSpace1);
                String content1 = s1.substring(firstSpace1+1);
                
                int firstSpace2 = s2.indexOf(" ");
                String identifier2 = s2.substring(0, firstSpace2);
                String content2 = s2.substring(firstSpace2+1);
                
                return content1.equals(content2) ? identifier1.compareTo(identifier2) : content1.compareTo(content2); 
            }
        });
        return results;
    }
}