[Leetcode]929. Unique Email Addresses

929. Unique Email Addresses

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?

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.
  • All local and domain names are non-empty.
  • Local names do not start with a '+' character.
    题意:每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。里面可能包含‘+’和‘.’ 第一个‘+’后面的内容会被忽略‘.’ 不影响,求一共有多少电子邮件
    思路:按照题目要求,过滤,最后用set去重,输出个数。
class Solution {
public:
    int numUniqueEmails(vector& emails) {
        unordered_set hash;
        for(auto email:emails)
        {
            int at=email.find('@');
            string name;
            for(auto c:email.substr(0,at))
                if(c=='+')
                    break;
            else if(c!='.')
                name+=c;
            string domain=email.substr(at+1);
            hash.insert(name+'@'+domain);
    
        }
        return hash.size();
    }
};

你可能感兴趣的:([Leetcode]929. Unique Email Addresses)