100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 929. Unique Email Addresses*

929. Unique Email Addresses*

时间:2022-01-06 09:32:08

相关推荐

929. Unique Email Addresses*

929. Unique Email Addresses*

/problems/unique-email-addresses/

题目描述

Every email consists of a local name and a domain name, separated by the@sign.

For example, inalice@,aliceis the local name, andis the domain name.

Besides lowercase letters, these emails may contain'.'s or'+'s.

If you add periods ('.') between some characters in thelocal namepart of an email address, mail sent there will be forwarded to the same address without dots in the local name. For example,"alice.z@"and"alicez@"forward to the same email address. (Note that this rule does not apply for domain names.)

If you add a plus ('+') in thelocal name, everything after the first plus sign will beignored. This allows certain emails to be filtered, for examplem.y+name@will be forwarded tomy@. (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 ofemails, we send one email to each address in the list. How many different addresses actually receive mails?

Example 1:

Input: ["test.email+alex@","test.e.mail+bob.cathy@","testemail+david@"]Output: 2Explanation: "testemail@" and "testemail@" actually receive mails

Note:

1 <= emails[i].length <= 1001 <= emails.length <= 100Eachemails[i]contains exactly one'@'character.All local and domain names are non-empty.Local names do not start with a'+'character.

C++ 实现 1

哈希表. 这道题需要注意额外的操作(比如遇到.或者+)都是在local name中进行的, 因此代码中使用is_local_name判断当前是否在local name中.

class Solution {public:int numUniqueEmails(vector<string>& emails) {unordered_set<string> record;for (auto &email : emails) {string valid_email;int i = 0;bool is_local_name = true;while (i < email.size()) {if (email[i] == '@') is_local_name = false;if (email[i] == '.' && is_local_name) {++ i;} else if (email[i] == '+' && is_local_name) {while (i < email.size() && email[i] != '@') ++ i;} else {valid_email += email[i++];}}record.insert(valid_email);}return record.size();}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。