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].endindex13 if ind != str.endindex14 {15 //截取子字符串16 str = String(str[..<ind])17 }18 //拼接字符串,Set添加用.insert19 es.insert(str + "@" + s[1])20 }21 return es.count22 }23 }总结
以上是内存溢出为你收集整理的[Swift Weekly Contest 108]LeetCode929. 独特的电子邮件地址 | Unique Email Addresses全部内容,希望文章能够帮你解决[Swift Weekly Contest 108]LeetCode929. 独特的电子邮件地址 | Unique Email Addresses所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)