Leetcode-937. 重新排列日誌檔案
阿新 • • 發佈:2018-11-16
你有一個日誌陣列 logs
。每條日誌都是以空格分隔的字串。
對於每條日誌,其第一個字為字母數字識別符號。然後,要麼:
- 識別符號後面的每個字將僅由小寫字母組成,或;
- 識別符號後面的每個字將僅由數字組成。
我們將這兩種日誌分別稱為字母日誌和數字日誌。保證每個日誌在其識別符號後面至少有一個字。
將日誌重新排序,使得所有字母日誌都排在數字日誌之前。字母日誌按字母順序排序,忽略識別符號,識別符號僅用於表示關係。數字日誌應該按原來的順序排列。
返回日誌的最終順序。
示例 :
輸入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"] 輸出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]
提示:
0 <= logs.length <= 100
3 <= logs[i].length <= 100
logs[i]
保證有一個識別符號,並且識別符號後面有一個字。
solution:
class Solution { public String[] reorderLogFiles(String[] logs) { List<String> numList = new ArrayList<>(); List<String> letterList = new ArrayList<>(); for(String s:logs){ int index = s.indexOf(" "); char c = s.charAt(index+1); if(c>='0'&&c<='9') numList.add(s); else letterList.add(s); } Collections.sort(letterList, (o1, o2) -> { int indexo1 = o1.indexOf(" "); int indexo2 = o2.indexOf(" "); String substro1 = o1.substring(indexo1+1); String substro2 = o2.substring(indexo2+1); return substro1.compareTo(substro2); }); String[] sortedLogs = new String[logs.length]; int i = 0; for(String s: letterList){ sortedLogs[i++] = s; } for(String s: numList){ sortedLogs[i++] = s; } return sortedLogs; } }