天天看點

LeetCode_929_獨特的電子郵件位址

題目描述:

每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符号分隔。

例如,在 [email protected]中, alice 是本地名稱,而 ​​​leetcode.com​​​ 是域名。

除了小寫字母,這些電子郵件還可能包含 ‘.’ 或 ‘+’。

如果在電子郵件位址的本地名稱部分中的某些字元之間添加句點(’.’),則發往那裡的郵件将會轉發到本地名稱中沒有點的同一位址。例如,"[email protected]” 和 “[email protected]” 會轉發到同一電子郵件位址。 (請注意,此規則不适用于域名。)

如果在本地名稱中添加加号(’+’),則會忽略第一個加号後面的所有内容。這允許過濾某些電子郵件,例如 ​​[email protected]​​ 将轉發到 ​​[email protected]​​。 (同樣,此規則不适用于域名。)

可以同時使用這兩個規則。

給定電子郵件清單 emails,我們會向清單中的每個位址發送一封電子郵件。實際收到郵件的不同位址有多少?

輸入樣例:
輸入:["[email protected]","[email protected]","[email protected]"]
輸出:2
解釋:實際收到郵件的是 "[email protected]" 和 "[email protected]"。      
class Solution {
public:
    int numUniqueEmails(vector<string>& emails) {
        set<string> res;//用于記錄不同string的個數
        for(string email:emails){
            string temp="";
            for(int i=0;i<email.size()&&email[i]!='+'&&email[i]!='@';i++){
                if(email[i]!='.')
                    temp+=email[i];
            }
            int k=0;//查找@的下标
            while(k<email.size()&&email[k]!='@')
                k++;
            while(k<email.size())
                temp+=email[k++];
            res.insert(temp);
        }
        return res.size();
    }
};