929. 獨特的電子郵箱地址(Python)

更多精彩內容,請關注【力扣簡單題】。

題目

難度:★★☆☆☆
類型:字符串

每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符號分隔。

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

除了小寫字母,這些電子郵件還可能包含 '.' 或 '+'。

如果在電子郵件地址的本地名稱部分中的某些字符之間添加句點('.'),則發(fā)往那里的郵件將會轉發(fā)到本地名稱中沒有點的同一地址。例如,"alice.z@leetcode.com” 和 “alicez@leetcode.com” 會轉發(fā)到同一電子郵件地址。 (請注意,此規(guī)則不適用于域名。)

如果在本地名稱中添加加號('+'),則會忽略第一個加號后面的所有內容。這允許過濾某些電子郵件,例如 m.y+name@email.com 將轉發(fā)到 my@email.com。 (同樣,此規(guī)則不適用于域名。)

可以同時使用這兩個規(guī)則。

給定電子郵件列表 emails,我們會向列表中的每個地址發(fā)送一封電子郵件。實際收到郵件的不同地址有多少?

提示
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"。

解答

這是字符串處理的基礎題,首先我們定義一個函數,實現簡化郵箱的功能:

  1. 將輸入郵箱用“@”劃分成本地名和域名兩部分;

  2. 對于本地名,將所有“.”符號全部刪除;

  3. 對于本地名,將第一次出現的“+”及其后面的所有字符串刪除;

  4. 返回處理后的本地名與域名合并而成的新郵箱。

我們使用集合來統(tǒng)計郵箱的不同種類。

class Solution:
    def numUniqueEmails(self, emails):
        """
        :param emails: List[str]
        :return: int
        """
        def simplify(email):
            local, domain = email.split('@')
            local = local.replace('.', '')
            local = local.split('+')[0]
            return local + '@' + domain
        
        return len(set(simplify(email) for email in emails))

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容