跳到主要内容

929.独特的电子邮件地址

链接:929.独特的电子邮件地址
难度:Easy
标签:数组、哈希表、字符串
简介:给你一个字符串数组 emails,我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。

题解 1 - cpp

  • 编辑时间:2022-03-23
  • 执行用时:32ms
  • 内存消耗:13.2MB
  • 编程语言:cpp
  • 解法介绍:遍历后组装新 email。
class Solution {
public:
int numUniqueEmails(vector<string> &emails) {
unordered_set<string> s;
for (auto &email : emails) {
s.insert(format(email));
}
for (auto &email : s) cout << email << endl;
return s.size();
}
string format(string &email) {
string ans = "";
int domain = false, ignore = false;
for (auto &ch : email) {
if (ch == '@') {
domain = true;
ignore = false;
}
if (!domain && ch != '+' && ch != '.' && !ignore || domain)
ans += ch;
if (ch == '+') ignore = true;
}
return ans;
}
};

题解 2 - typescript

  • 编辑时间:2022-06-04
  • 执行用时:16ms
  • 内存消耗:14MB
  • 编程语言:typescript
  • 解法介绍:遍历。
class Solution {
public:
int numUniqueEmails(vector<string> &emails) {
unordered_set<string> s;
for (auto &o : emails) s.insert(format(o));
return s.size();
}
string format(string email) {
string ans = "";
bool suffix = false, ignore = false;
for (auto &ch : email) {
if (ch == '+') {
ignore = true;
} else if (ch == '@') {
suffix = true;
ans += ch;
} else if (ch == '.' && !suffix) {
continue;
} else if (suffix || !ignore) {
ans += ch;
}
}
return ans;
}
};