標籤:
【華為OJ】【演算法總篇章】【華為OJ】【069-簡單錯誤記錄】【工程下載】題目描述
開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的代碼所在的檔案名稱和行號。處理: 1、 記錄最多8條錯誤記錄,迴圈記錄,對相同的錯誤記錄(淨檔案名稱和行號完全符合)只記錄一條,錯誤計數增加; 2、 超過16個字元的檔案名稱,只記錄檔案的最後有效16個字元; 3、 輸入的檔案可能帶路徑,記錄檔案名稱不能帶路徑。
輸入描述
一行或多行字串。每行包括帶路徑檔案名稱,行號,以空格隔開。
輸出描述
將所有的記錄統計並將結果輸出,格式:檔案名稱 程式碼數 數目,一個空格隔開,如:
輸入例子
E:\V1R2\product\fpgadrive.c 1325
輸出例子
fpgadrive.c 1325 1
演算法實現
import java.util.ArrayList;import java.util.Scanner;/** * Author: 王俊超 * Time: 2016-04-24 13:28 * CSDN: http://blog.csdn.net/derrantcm * Github: https://github.com/Wang-Jun-Chao * Declaration: All Rights Reserved !!! */public class Main { private static class Error { private String name; private int line; private int count; @Override public String toString() { return name + " " + line + " " + count; } } public static void main(String[] args) { Scanner input = new Scanner(System.in); ArrayList<Error> errors = new ArrayList<>(); while (input.hasNext()) { String name = input.next(); int num = input.nextInt(); Error record = new Error(); name = name.substring(name.lastIndexOf("\\") + 1); if (name.length() > 16) { name = name.substring(name.length() - 16); } boolean flag = true; //重複檢驗 for (Error error : errors) { if (name.equals(error.name) && num == error.line) { error.count++; flag = false; } } //表示為新Record if (flag) { record.name = name; record.line = num; record.count = 1; errors.add(record); } } input.close(); //最多紀錄8條錯誤紀錄 int j = 0; if (errors.size() > 8){ j = errors.size() - 8; } for (; j < errors.size(); j++) { System.out.println(errors.get(j)); } }}
【華為OJ】【069-簡單錯誤記錄】