天天看點

【刷題】華為筆試面試機考 [HJ19] - 簡單錯誤記錄

題目位址

  • 點選跳轉

題目描述

開發一個簡單錯誤記錄功能小子產品,能夠記錄出錯的代碼所在的檔案名稱和行号。

處理:

1、 記錄最多8條錯誤記錄,循環記錄,最後隻用輸出最後出現的八條錯誤記錄。對相同的錯誤記錄隻記錄一條,但是錯誤計數增加。最後一個斜杠後面的帶字尾名的部分(保留最後16位)和行号完全比對的記錄才做算是”相同“的錯誤記錄。

2、 超過16個字元的檔案名稱,隻記錄檔案的最後有效16個字元;

3、 輸入的檔案可能帶路徑,記錄檔案名稱不能帶路徑。

4、循環記錄時,隻以第一次出現的順序為準,後面重複的不會更新它的出現時間,仍以第一次為準

輸入描述:

每組隻包含一個測試用例。一個測試用例包含一行或多行字元串。每行包括帶路徑檔案名稱,行号,以空格隔開。

輸出描述:

将所有的記錄統計并将結果輸出,格式:檔案名 代碼行數 數目,一個空格隔開,如:

示例1

輸入

D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645
E:\je\rzuwnjvnuz 633
C:\km\tgjwpb\gy\atl 637
F:\weioj\hadd\connsh\rwyfvzsopsuiqjnr 647
E:\ns\mfwj\wqkoki\eez 648
D:\cfmwafhhgeyawnool 649
E:\czt\opwip\osnll\c 637
G:\nt\f 633
F:\fop\ywzqaop 631
F:\yay\jc\ywzqaop 631
           

輸出

rzuwnjvnuz 633 1
atl 637 1
rwyfvzsopsuiqjnr 647 1
eez 648 1
fmwafhhgeyawnool 649 1
c 637 1
f 633 1
ywzqaop 631 2

           

解題思路

循環接收所有輸入内容,接收參數時順便将資料簡單處理一下:

1、從最後一個斜杠開始,取 16 位(或直到結尾)

2、記錄行數

然後将日志按照

檔案名

分組,統計出現頻次。

取最後 8 個元素輸出。

代碼

  • Python 3
inputs = []
inputs_with_lines = []

while True:
    try:
        it = input().split()
        inputs.append(it)
        
        path = it[0].split('\\')[-1][-16:]
        
        inputs_with_lines.append("{} {}".format(path, it[1]))
    except:
        break

logs = []
for e in inputs_with_lines:
    log = "{} {}".format(e, inputs_with_lines.count(e))
    if log in logs:
        continue
    logs.append(log)

logs = logs[-8:]

for log in logs:
    print(log)