Skip to content

Commit 619342e

Browse files
author
aestheticw3
authored
Update 0929-unique-email-addresses.js
1 parent 2936845 commit 619342e

File tree

1 file changed

+49
-10
lines changed

1 file changed

+49
-10
lines changed
+49-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,50 @@
1-
var numUniqueEmails = function(emails) {
2-
const valid=emails.map(email=>{
3-
const [local, domain] = email.split('@');
4-
return local.split('+').shift().split('.').join('')+'@'+domain;
5-
});
6-
const set=new Set(valid)
7-
8-
return set.size
9-
10-
1+
/**
2+
* Built-in Functions Solution
3+
* Hash Set - Unique Emails
4+
* Time O(N * K) | Space O(N)
5+
* https://leetcode.com/problems/unique-email-addresses
6+
* @param {string[]} emails
7+
* @return {number}
8+
*/
9+
var numUniqueEmails = function (emails) {
10+
const valid = emails.map(email => {
11+
const [local, domain] = email.split("@");
12+
return (
13+
local.split("+").shift().split(".").join("") + "@" + domain
14+
);
15+
});
16+
17+
return new Set(valid).size;
18+
};
19+
20+
/**
21+
* Manual Solution
22+
* Hash Set - Unique Emails
23+
* Time O(N * K) | Space O(N)
24+
* https://leetcode.com/problems/unique-email-addresses
25+
* @param {string[]} emails
26+
* @return {number}
27+
*/
28+
var numUniqueEmails = function (emails) {
29+
const uniqEmails = new Set();
30+
31+
for (let email of emails) {
32+
let cleanEmail = "";
33+
for (let i = 0; i < email.length; i++) {
34+
if (email[i] === "@") {
35+
cleanEmail += email.slice(i);
36+
break;
37+
} else if (email[i] === "+") {
38+
while (email[i] !== "@") i++;
39+
cleanEmail += email.slice(i);
40+
break;
41+
} else if (email[i] !== ".") {
42+
cleanEmail += email[i];
43+
}
44+
}
45+
46+
uniqEmails.add(cleanEmail);
47+
}
48+
49+
return uniqEmails.size;
1150
};

0 commit comments

Comments
 (0)