Every email consists of a local name and a domain name,separated by the @ sign.
For example,in [email protected]
, alice
is the local name,and leetcode.com
is the domain name.
Besides lowercase letters,these emails may contain ‘.‘
s or ‘+‘
s.
If you add periods (‘.‘
) between some characters in the local name part of an email address,mail sent there will be forwarded to the same address without dots in the local name. For example, "[email protected]"
and "[email protected]"
forward to the same email address. (Note that this rule does not apply for domain names.)
If you add a plus (‘+‘
) in the local name,everything after the first plus sign will be ignored. This allows certain emails to be filtered,for example [email protected]
will be forwarded to [email protected]
. (Again,this rule does not apply for domain names.)
It is possible to use both of these rules at the same time.
Given a list of emails
,we send one email to each address in the list. How many different addresses actually receive mails?
Example 1:
Input: ["[email protected]","[email protected]","[email protected]"]
Output: 2 Explanation: "[email protected]" and "[email protected]" actually receive mails
Note:
1 <= emails[i].length <= 100
1 <= emails.length <= 100
- Each
emails[i]
contains exactly one‘@‘
character.
每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。
例如,在 [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]"。
提示:
1 <= emails[i].length <= 100
1 <= emails.length <= 100
- 每封
emails[i]
都包含有且仅有一个‘@‘
字符。
412ms
1 class Solution { 2 func numUniqueEmails(_ emails: [String]) -> Int { 3 var es:Set<String> = Set<String>() 4 for e in emails 5 { 6 //分割字符串 7 var s: Array = e.components(separatedBy: "@") 8 var str:String = String(s[0]) 9 //字符串替换 10 str = str.replacingOccurrences(of: ".",with: "") 11 //字符查找,返回字符索引 12 var ind = str.firstIndex(of: "+") ?? s[0].endindex 13 if ind != str.endindex 14 { 15 //截取子字符串 16 str = String(str[..<ind]) 17 } 18 //拼接字符串,Set添加用.insert 19 es.insert(str + "@" + s[1]) 20 } 21 return es.count 22 } 23 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。