小學期 電話號碼問題

2021-08-07 23:38:55 字數 2165 閱讀 4694

商業單位需要容易記憶的**號碼,有一些方法可以讓**號碼變得更容易記憶。譬如,可以把**號碼寫成單詞或短語,如 mon-glop 可以代表滑鐵盧大學的**。有時僅僅是把號碼的一部分寫成單詞,如打 310-gino 便可向 gino 比薩餅店定購比薩。另一種讓**號碼容易記憶的方法是將數字用一種容易記的方式組合起來,譬如 3-10-10-10 也可以代表 gino 比薩餅店。

**號碼的標準形式是七位十進位制數字,在它的第三位和第四位之間用連字元連線(例如:666-1200)。**的鍵盤提供了字元與數字之間的對映關係,如下所示:

2a、b和c

3d、e和f

4g、h和i

5j、k和l

6m、n和o

7p、r和s

8t、u和v

9w、x和y

q 和 z 沒有對映到鍵盤,而連字元不需要被撥打並且可以根據需要新增和刪除。mon-glop 的標準形式是 666-4567,310-gino 的標準形式是310-4466,3-10-10-10的標準形式也是 310-1010。

如果兩個**號碼有相同的標準形式,那麼這兩個**號碼是相同的。

你所在的公司正在編輯一本當地商業單位的**簿,作為質量控制流程的一部分,你需要確認在該**簿中有沒有錯誤的**號碼,以及有沒有兩個(或兩個以上的)商業單位使用相同的**號碼。由於當地只使用了 3 和 6 兩個區段,因此**號碼的第乙個數字應當永遠是 3 或者 6,如果出現了其它數字,就表示這個**號碼錯了。此外,如果**號碼中出現了 q 和 z,也說明這個**錯了。

一次輸入為乙個樣例。每個號碼一行,每行的字元不會超過 20 個。每次輸入的資料可能會非常大,譬如超過 1,000,000 個**號碼。

你可以假設輸入中可能會出現重複的**號碼不超過 1,500 個,每個號碼重複的次數不超過 1000 次。

輸出包括兩個部分,第乙個部分是錯誤的**號碼,對於這些號碼應當按照輸入的順序以原始的形式輸出。在輸出錯誤**號碼前輸出「error:」,隨後輸出這些號碼,如果沒有錯誤的**號碼,則輸出「not found.」。

第二部分是重複的**號碼,對每乙個在**簿中以任何形式出現一次以上的**號碼,生成一行輸出。這一行應以標準形式給出**號碼,其後跟隨乙個空格,空格後跟隨**號碼在**簿中出現的次數。所有重複的**號碼輸出行應以號碼的公升序排列(小號碼在前)。在輸出重複**號碼前輸出「duplication」,隨後按照上述格式輸出號碼,如果在輸入中沒有重複的**號碼,則輸出:「not found.」。

你所編寫的程式以後可能會在一種特殊的嵌入式裝置上執行,為了降低成本,這種裝置使用的 cpu 不是很快、可用的 ram 為 288k(跟 gba 一樣)且它沒有磁碟裝置因此不能使用檔案作為資料的臨時儲存。

請參考《程式設計珠璣》第一部分,若程式不能在規定的記憶體中執行,則不得分。

測試用例1:

測試輸入:
4873279

its-easy

666-4567

3-10-10-10

666-glop

mon-glop

367-11-11

310-gino

f101010

666-1200

-4-8-7-3-2-7-9

487-3279

測試輸出:
error:

4873279

its-easy

-4-8-7-3-2-7-9

487-3279

duplication:

310-1010 2

666-4567 3

測試用例2:
測試輸入:
3456789
測試輸出:
error:

not found.

duplication:

not found.

題解:

這一題的儲存限制是512k,那麼用陣列來儲存資料的方法便不可能了,儲存不夠,這時需要一種新方法來儲存**號碼的資訊,有一種方法叫位圖法,可以儲存大量資料,判斷某個數是否存在,本題正好可以使用,來判斷**號碼是否出現一次,開乙個有1500大小的陣列,用來儲存出現次數超過兩次的**號碼,這樣就比較簡單了!然後把**號碼按從小到大的順序排一下,也可以用結構體記錄重複的**號碼。最後輸出時,後四位可以用"%04d"輸出。

位圖法學習連線:

ac**:

電話號碼問題

問題描述 商業單位需要容易記憶的 號碼,有一些方法可以讓 號碼變得更容易記憶。譬如,可以把 號碼寫成單詞或短語,如 mon glop 可以代表滑鐵盧大學的 有時僅僅是把號碼的一部分寫成單詞,如打 310 gino 便可向 gino 比薩餅店定購比薩。另一種讓 號碼容易記憶的方法是將數字用一種容易記的...

電話號碼問題

商業單位需要容易記憶的 號碼,有一些方法可以讓 號碼變得更容易記憶。譬如,可以把 號碼寫成單詞或短語,如 mon glop 可以代表滑鐵盧大學的 有時僅僅是把號碼的一部分寫成單詞,如打 310 gino 便可向 gino 比薩餅店定購比薩。另一種讓 號碼容易記憶的方法是將數字用一種容易記的方式組合起...

遮蔽電話號碼

private static final string regex fixedphone 010 02 d 0 3 9 d d private static final pattern pattern zipcode pattern.compile regex fixedphone 遮蔽 號碼,固定...