1. 程式人生 > 其它 >java題目 運維日誌

java題目 運維日誌

/* 運維工程師採集到某產品線網執行一天產生的日誌n條 現需根據日誌時間先後順序對日誌進行排序 日誌時間格式為H:M:S.N
H表示小時(0~23) M表示分鐘(0~59) S表示秒(0~59) N表示毫秒(0~999) 時間可能並沒有補全
也就是說 01:01:01.001也可能表示為1:1:1.1

輸入描述
第一行輸入一個整數n表示日誌條數
1<=n<=100000
接下來n行輸入n個時間

輸出描述
按時間升序排序之後的時間
如果有兩個時間表示的時間相同
則保持輸入順序

示例:
輸入:
2
01:41:8.9
1:1:09.211
輸出
1:1:09.211
01:41:8.9 示例
輸入
3
23:41:08.023
1:1:09.211
08:01:22.0
輸出
1:1:09.211
08:01:22.0
23:41:08.023

 

 1 import java.util.*;
 2 import java.io.*;
 3 
 4 public class Main {
 5     public static void main(String[] args) throws IOException{
 6         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 7 //        Scanner sc = new Scanner(System.in);
 8         int n = Integer.parseInt(bf.readLine());
9 String[] s = new String[n]; 10 for(int i=0; i<n; i++) { 11 s[i] = bf.readLine(); 12 } 13 14 15 Map<String, String> sortMap = new TreeMap<String, String>( 16 new Comparator<String>() { 17 public
int compare(String o1, String o2) { 18 return o1.compareTo(o2); 19 } 20 }); 21 22 int len =s.length; 23 for(int i = 0; i < len; i++) { 24 String[] split = s[i].replace(".", ":").split(":"); 25 String v = ""; 26 if(split[0].length() == 1) { 27 v += "0" + split[0]; 28 }else { 29 v += split[0]; 30 } 31 if(split[1].length() == 1) { 32 v += "0" + split[1]; 33 }else { 34 v += split[1]; 35 } 36 if(split[2].length() == 1) { 37 v += "0" + split[2]; 38 }else { 39 v += split[2]; 40 } 41 if(split[3].length() == 1) { 42 v += "00" + split[3]; 43 }else if(split[3].length() ==2) { 44 v += "0" + split[3]; 45 }else { 46 v += split[3]; 47 } 48 49 if(sortMap.containsKey(v)) { 50 sortMap.put(v + 1, s[i]); 51 }else { 52 sortMap.put(v, s[i]); 53 } 54 } 55 56 for(String ss : sortMap.keySet()) { 57 System.out.println(sortMap.get(ss)); 58 } 59 } 60 }