主題

LeetCode - 929. Unique Email Addresses 解題心得

Not In My Back Yard | 2021-02-16 00:00:01 | 巴幣 0 | 人氣 26

題目連結:


題目意譯:
每個電子郵件由一個本地名(Local Name)以及一個網域名(Domain Name)組成,兩者之間以一個「@」分隔。

例如在 alice@leetcode.com 中,alice 為本地名,而 leetcode.com 為網域名。

除了小寫字母以外,這些電子郵件可能包含「.」或是「+」字元。

如果加入「.」於電子郵件之本地名的某些字元之間,送往該地址的郵件會轉送至同個地址但是去掉本地名中的「.」。例如 "alice.z@leetcode.com" 以及 "alicez@leetcode.com" 之信件會送到同一個電子郵件地址。(注意此規則並不適用於網域名)

如果加入「+」於本地名中,所有在第一個「+」後的字元將被忽略。這允許了過濾掉某些郵件,例如 m.y+name@email.com 會轉送至 my@email.com 。(同樣地,此規則不適用於網域名)

可以同時使用以上兩個規則。

給定一個電子郵件列表 emails,我們將對於每個地址各送一份郵件。有多少不同的電子郵件地址,其才是真的負責接受郵件的?

注:
1 ≦ emails[i].length ≦ 100
1 ≦ emails.length ≦ 100
每個 emails[i] 包含恰好一個「@」字元。
所有本地、網域名皆非空。
本地不會以「+」做為開頭字元。



範例測資:
輸入: ["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]
輸出: 2
解釋: "testemail@leetcode.com" 和 "testemail@lee.tcode.com" 為實際上接受郵件之地址。


解題思維:
就是單純按照題目的要求,先將每個電子郵件之地址按照規則去除「.」、「+」及「+」其後的所有字元(直到「@」前)。然後將所有電子郵件之地址全部丟進雜湊表(Hash Table)裡,看有多少種不同的地址,該數量即是所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作