1. 程式人生 > >【leecode】獨特的電子郵件地址

【leecode】獨特的電子郵件地址

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

例如,在 [email protected]中, alice 是本地名稱,而 leetcode.com 是域名。

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

如果在電子郵件地址的本地名稱部分中的某些字元之間新增句點('.'),則發往那裡的郵件將會轉發到本地名稱中沒有點的同一地址。例如,"[email protected] 和 [email protected] 會轉發到同一電子郵件地址。 (請注意,此規則不適用於域名。)

如果在本地名稱中新增加號('+'),則會忽略第一個加號後面的所有內容。這允許過濾某些電子郵件,例如 [email protected] 將轉發到 [email protected]。 (同樣,此規則不適用於域名。)

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

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

輸入:["[email protected]","[email protected]","[email protected]"]
輸出:2
解釋:實際收到郵件的是 
"[email protected]""[email protected]"
class Solution:
    def numUniqueEmails(self, emails):
        """
        :type emails: List[str]
        :rtype: int
        """
        import re
        num_list = []
        for email in emails:
            email_head = re.findall('
(.*)@', email)[0] email_tail = re.findall('@.*', email)[0] email_body_1 = email_head.replace('.', '') email_body_2 = re.findall('(.*?)\\+', email_body_1) # print(email_body_2) if email_body_2: email_body_2 = email_body_2[0] else: email_body_2 = email_body_1 num_list.append(email_body_2+email_tail) # print(num_list) return len(set(num_list))
解答