The questions are as follows:
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, andleetcode.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[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 listemails
, 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: 2Explanation: "[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.
Solution:The passing rate of 82% is enough to prove how simple this question is. Replace '.' of the local name with '', and cut off the content after the first '+.
The Code is as follows:
class Solution(object): def numUniqueEmails(self, emails): """ :type emails: List[str] :rtype: int """ dic = {} for i in emails: e = i.split(‘@‘) e[0] = e[0].replace(‘.‘,‘‘) if ‘+‘ in e[0]: e[0] = e[0][:e[0].index(‘+‘)] if e[0] + ‘@‘ + e[1] not in dic: dic[e[0] + ‘@‘ + e[1]] = 1 #print dic return len(dic)
[Leetcode] 929. Unique email addresses