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;
    }
};