929. 獨特的電子郵件地址
每個 有效電子郵件地址 都由一個 本地名 和一個 域名 組成,以 '@' 符號分隔。除小寫字母之外,電子郵件地址還可以含有一個或多個 '.' 或 '+' 。
- 例如,在
alice@leetcode.com中,alice是 本地名 ,而leetcode.com是 域名 。
如果在電子郵件地址的 本地名 部分中的某些字符之間添加句點('.'),則發往那裏的郵件將會轉發到本地名中沒有點的同一地址。請注意,此規則 不適用於域名 。
- 例如,
"alice.z@leetcode.com”和“alicez@leetcode.com”會轉發到同一電子郵件地址。
如果在 本地名 中添加加號('+'),則會忽略第一個加號後面的所有內容。這允許過濾某些電子郵件。同樣,此規則 不適用於域名 。
- 例如
m.y+name@email.com將轉發到my@email.com。
可以同時使用這兩個規則。
給你一個字符串數組 emails,我們會向每個 emails[i] 發送一封電子郵件。返回實際收到郵件的不同地址數目。
示例 1:
輸入:emails = ["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"。
示例 2:
輸入:emails = ["a@leetcode.com","b@leetcode.com","c@leetcode.com"]
輸出:3
提示:
1 <= emails.length <= 1001 <= emails[i].length <= 100emails[i]由小寫英文字母、'+'、'.'和'@'組成- 每個
emails[i]都包含有且僅有一個'@'字符 - 所有本地名和域名都不為空
- 本地名不會以
'+'字符作為開頭
class Solution {
public int numUniqueEmails(String[] emails) {
Set<String> emailSet = new HashSet<String>();
for (String email : emails) {
int i = email.indexOf('@');
String domainPart = email.substring(i);
int a = email.indexOf('+');
if (a == -1) a = i; // 若無'+'號,則將a置為i,截取@前所有內容
String localPart = email.substring(0,a);
localPart = localPart.replace(".","");
emailSet.add(localPart+domainPart);
}
return emailSet.size();
}
}
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。