[LeetCode] 929. Unique Email Addresses

题目链接:929. Unique Email Addresses 

 

解题思路:

对 C++ STL 还是菜鸟级别,直接看了 Discuss 大佬们的操作,发现了个不错的代码,拿来学一下。

 

笔记:

1、unordered_set 是一种无序哈希表,键值不可修改,但可以删除和插入;

2、关于 string::find,返回的是第一个匹配到的字符位置,类型是 size_t(一种无符号整数类型)。如果找不到该字符,函数返回的是 string::npos;

3、remove 只是通过迭代器的指针向前移动来删除,将没有被删除的元素放在链表的前面,并返回一个指向新的超尾值的迭代器。删除还是需要借助 erase。

 

class Solution {
public:
    int numUniqueEmails(vector& emails) {
        unordered_set hash;
        for (string &email : emails)
        {
            size_t i = email.find('+');
            size_t j = email.find('@');
            if (i != string::npos)
                email.erase(email.begin()+i, email.begin()+j);
            
            j = email.find('@');
            email.erase(remove(email.begin(), email.begin()+j, '.'), email.begin()+j);
            hash.insert(email);
        }
        return hash.size();
    }
};

 

你可能感兴趣的:(LeetCode)