Leetcode 929:獨特的電子郵件地址
題目描述:每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符號分隔。
例如,在 [email protected]中, alice 是本地名稱,而 leetcode.com 是域名。
除了小寫字母,這些電子郵件還可能包含 ‘,’ 或 ‘+’。
如果在電子郵件地址的本地名稱部分中的某些字元之間新增句點(’.’),則發往那裡的郵件將會轉發到本地名稱中沒有點的同一地址。例如,"[email protected]” 和 “[email protected]” 會轉發到同一電子郵件地址。 (請注意,此規則不適用於域名。)
如果在本地名稱中新增加號(’+’),則會忽略第一個加號後面的所有內容。這允許過濾某些電子郵件,例如
可以同時使用這兩個規則。
給定電子郵件列表 emails,我們會向列表中的每個地址傳送一封電子郵件。實際收到郵件的不同地址有多少?
示例:
輸入:[“[email protected]”,“[email protected]”,“[email protected]”] 輸出:2 解釋:實際收到郵件的是 "[email protected]" 和 "[email protected]"。
提示:
1 <= emails[i].length <= 100 1 <= emails.length <= 100 每封 emails[i] 都包含有且僅有一個 ‘@’ 字元。
好了,接下來分析一下,一個電子郵件,一個@符號,前面是本地名稱,後面是域名,域名必須得一毛一樣,所以先不管,本地名稱加號後面不影響,那就只要加號前面的,然後小‘.‘也無所謂。emmm,就split和r刪除線格式 eplace嘛。上程式碼:
def numUniqueEmails(self, emails):
"""
:type emails: List[str]
:rtype: int
"""
s=[]
m=[]
j=0
for i in emails:
s. append(i.split('@'))#以@符號分割郵件地址
s[j][0]=s[j][0].split('+')[0]#以+分割本地名稱,取前半部分
s[j][0]=s[j][0].replace('.','')#去除小'.'
m.append(''.join(s[j]))#將這個分割好的地址連成字串存入list中
j+=1#下一行索引
return len(set(m))#通過set去除重複元素,實現不同元素的計數
總感覺我的索引太多,不是很美觀。傳送門——————
def numUniqueEmails(self, emails):
"""
:type emails: List[str]
:rtype: int
"""
email=set()
for i in emails:
name,addr=i.split('@')
name=name.split('+')[0]
name=name.replace('.','')
email.add(name+'@'+addr)
return len(email)
確實好像比我的好看一點,其實沒啥大區別,放過自己了。