-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathuniqueEmails.js
37 lines (27 loc) · 979 Bytes
/
uniqueEmails.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// https://leetcode.com/problems/unique-email-addresses/solution/
let numUniqueEmails = function (emails) {
// hash set to store all the unique emails
let uniqueEmails = new Set();
emails.forEach((email) => {
let cleanMail = [];
// iterate over each character in email
for (let i = 0; i < email.length; ++i) {
let currChar = email.charAt(i);
// stop adding characters to localName
if (currChar === '+' || currChar === '@') break;
// add this character if not '.'
if (currChar !== '.') cleanMail.push(currChar);
}
// compute domain name (substring from end to '@')
let domainName = [];
for (i = email.length - 1; i >= 0; --i) {
let currChar = email.charAt(i);
domainName.push(currChar);
if (currChar == '@') break;
}
domainName = domainName.reverse().join('');
cleanMail = cleanMail.join('');
uniqueEmails.add(cleanMail + domainName);
});
return uniqueEmails.size;
};