|
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; |
11 | 50 | };
|
0 commit comments