#41622: C++詳解-Map


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
e641. 10260 - Soundex -- UVA | From: [45.144.227.57] | 發表日期 : 2024-08-11 09:04

使用 Map 來紀錄每一個字元對應的 Soundex Code,並且用字元的方式來紀錄,這樣子可以把答案使用字串的方式加起來。Soundex Code 中沒有的字元就不需要宣告,這些字元在宣告 Map 時會自動預設為 0。

對收到字串的每一個字元做判斷,如果目前字元的 Soundex Code 不為 0,則要判斷這個字元是否為第一個 Soundex Code,可以在迴圈外面宣告一個布林值來確認,如果為第一個 Soundex Code,則將在迴圈外面宣告的字串 ans 變數 (預設為 “”) += Map[目前字元],並且還要在迴圈的外面宣告一個字元 last 代表上一個 Soundex Code,將 last 設為 Map[目前字元]。如果不是第一個 Soundex Code 則要判斷目前的 Soundex Code 是否與 last 一致,如果不一致的話就要將 ans += Map[目前字元],並且要將 last 設為新的 Map[目前字元]。

如果 Soundex Code 為 0,代表之後的要重新做判斷,所以要將 last 設為 ‘0’。

 

範例程式碼

 
ZeroJudge Forum