我们先来看题目描述每个有效电子邮件地址都由一个本地名和一个域名组成以 符号分隔。除小写字母之外电子邮件地址还可以含有一个或多个 . 或 。如果在本地名中添加加号则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样此规则不适用于域名。例如 m.ynameemail.com 将转发到 myemail.com 。可以同时使用这两个规则。给你一个字符串数组 emails 我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。示例 1输入emails [test.emailalexleetcode.com,test.e.mailbob.cathyleetcode.com,testemaildavidlee.tcode.com] 输出2 解释实际收到邮件的是 testemailleetcode.com 和 testemaillee.tcode.com。示例 2输入emails [aleetcode.com,bleetcode.com,cleetcode.com] 输出3提示1 emails.length 1001 emails[i].length 100emails[i] 由小写英文字母、、. 和 组成每个 emails[i] 都包含有且仅有一个 字符所有本地名和域名都不为空本地名不会以 字符作为开头解决方案根据题意我们需要将每个邮件地址的本地名按照规则转换具体来说去掉本地名中第一个加号之后的部分包括加号去掉本地名中所有的句点。转换后得到了实际的邮件地址。为了计算不同地址的数目我们可以用一个哈希表记录所有的邮件地址答案为哈希表的长度。代码Python3class Solution: def numUniqueEmails(self, emails: List[str]) - int: emailSet set() for email in emails: i email.index() local email[:i].split(, 1)[0] # 去掉本地名第一个加号之后的部分 local local.replace(., ) # 去掉本地名中所有的句点 emailSet.add(local email[i:]) return len(emailSet)
算法专题:独特的电子邮件地址
我们先来看题目描述每个有效电子邮件地址都由一个本地名和一个域名组成以 符号分隔。除小写字母之外电子邮件地址还可以含有一个或多个 . 或 。如果在本地名中添加加号则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样此规则不适用于域名。例如 m.ynameemail.com 将转发到 myemail.com 。可以同时使用这两个规则。给你一个字符串数组 emails 我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。示例 1输入emails [test.emailalexleetcode.com,test.e.mailbob.cathyleetcode.com,testemaildavidlee.tcode.com] 输出2 解释实际收到邮件的是 testemailleetcode.com 和 testemaillee.tcode.com。示例 2输入emails [aleetcode.com,bleetcode.com,cleetcode.com] 输出3提示1 emails.length 1001 emails[i].length 100emails[i] 由小写英文字母、、. 和 组成每个 emails[i] 都包含有且仅有一个 字符所有本地名和域名都不为空本地名不会以 字符作为开头解决方案根据题意我们需要将每个邮件地址的本地名按照规则转换具体来说去掉本地名中第一个加号之后的部分包括加号去掉本地名中所有的句点。转换后得到了实际的邮件地址。为了计算不同地址的数目我们可以用一个哈希表记录所有的邮件地址答案为哈希表的长度。代码Python3class Solution: def numUniqueEmails(self, emails: List[str]) - int: emailSet set() for email in emails: i email.index() local email[:i].split(, 1)[0] # 去掉本地名第一个加号之后的部分 local local.replace(., ) # 去掉本地名中所有的句点 emailSet.add(local email[i:]) return len(emailSet)