1. 程式人生 > >華為線上程式設計題系列-19-簡單錯誤記錄

華為線上程式設計題系列-19-簡單錯誤記錄

問題描述:
問題描述

1. 問題涉及知識點.

  • 程式的停止問題(如本題所述,即不知道什麼時候結束,只是說每次列印最後八個,所以還是按照一般處理,在最後列印時只是列印容器中最後把即可.)
  • 淨檔名:值得就是檔名稱.

2. 自己解法.

  • 使用LinkedHashMap 對資料進行儲存.
  • 淨檔名+" "+行號作為key進行儲存,把對應的錯誤次數作為value.
  • 判斷是否含有使用map.containsKey(key)進行判斷,如果含有對value進行+1.
  • 此題應該除注意的是 HashMap的輸出順序不一定和輸入順序相同.所以建議使用LinkedHashMap .
package com.chaoxiong.niuke.huawei;
import
java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; public class HuaWei_19_2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Map<String, Integer> map = new LinkedHashMap<String, Integer>(); while (sc.hasNext()) { String str = sc.next(); int
linenum = sc.nextInt(); // 擷取 str = str.substring(str.lastIndexOf("\\")+1); // 算長度 int len = str.length(); if(len>16) str = str.substring(len-16); String key = str+" "+linenum; if(map.containsKey(key)){ map.put(key,map.get(key)+1
); }else map.put(key,1); } // 列印處理, 如果長度大於8 只打印最後8個. int mapSize = map.keySet().size(); if(mapSize<=8){ for(String string:map.keySet()){ System.out.println(string+" "+map.get(string)); } }else { int flag = 1; for(String string:map.keySet()){ if(flag>mapSize-8){ //列印 System.out.println(string+" "+map.get(string)); } flag += 1; } } } }

3. 優質答案.

null

4. 本題總結.

再含有鍵值對的資料處理的時候 map 的優勢就很清晰的體現出來.
如果需要保證輸入順序和輸出順序相同需要使用LinkedHashMap.