題目描述:
每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符号分隔。
例如,在 [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();
}
};