leetcode 929. 獨特的電子郵件地址(Unique Email Addresses)
阿新 • • 發佈:2019-04-08
ali 多少 order for 我們 輸入 vector address test
會轉發到同一電子郵件地址。 (請註意,此規則不適用於域名。)
目錄
- 題目描述:
- 示例:
- 解法:
題目描述:
每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符號分隔。
例如,在 [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]"。
提示:
1 <= emails[i].length <= 100
1 <= emails.length <= 100
- 每封
emails[i]
都包含有且僅有一個‘@‘
字符。
解法:
class Solution { public: string process(string s){ int sz = s.size(); string local = ""; string domain = ""; int i = 0; while(i < sz && s[i] != '@'){ i++; } domain = s.substr(i); int j = 0; while(j < i && s[j] != '+'){ if(s[j] != '.'){ local += s[j]; } j++; } return local + domain; } int numUniqueEmails(vector<string>& emails) { unordered_set<string> st; for(string email : emails){ st.insert(process(email)); } return st.size(); } };
leetcode 929. 獨特的電子郵件地址(Unique Email Addresses)