diff --git a/src/UniqueEmailAddresses929.java b/src/UniqueEmailAddresses929.java deleted file mode 100644 index d91e25c..0000000 --- a/src/UniqueEmailAddresses929.java +++ /dev/null @@ -1,20 +0,0 @@ -import java.util.HashSet; -import java.util.Set; - -public class UniqueEmailAddresses929 { - public int numUniqueEmails(String[] emails) { - Set emailsReceived = new HashSet<>(); - int res = 0; - for (String email : emails) { - String[] parts = email.split("@"); - parts[0] = parts[0].replace(".", ""); - parts[0] = parts[0].split("\\+")[0]; - String emailRes = parts[0] + "@" + parts[1]; - if (!emailsReceived.contains(emailRes)) { - emailsReceived.add(emailRes); - res++; - } - } - return res; - } -} diff --git a/src/main/java/com/leetcode/easy/UniqueEmailAddresses929.java b/src/main/java/com/leetcode/easy/UniqueEmailAddresses929.java new file mode 100644 index 0000000..c2593a7 --- /dev/null +++ b/src/main/java/com/leetcode/easy/UniqueEmailAddresses929.java @@ -0,0 +1,54 @@ +// Tags: Array, String, Hash Set +package com.leetcode.easy; + +import java.util.HashSet; +import java.util.Set; + +public class UniqueEmailAddresses929 { + + /** + * Returns the number of unique email addresses after applying normalization rules. + *

+ * Normalization rules: + *

+ *

+ * Time Complexity: O(N × L) + *

+ *

+ * Space Complexity: O(N × L) + *

+ * + * @param emails array of email addresses to process + * @return the count of unique email addresses + */ + public int numUniqueEmails(String[] emails) { + Set emailHashSet = new HashSet<>(); + for (String email : emails) { + String[] parts = email.split("@"); + String localName = parts[0].replace(".", "").split("\\+")[0]; + emailHashSet.add(localName + "@" + parts[1]); + } + return emailHashSet.size(); + } +} diff --git a/src/test/java/com/leetcode/easy/UniqueEmailAddresses929Test.java b/src/test/java/com/leetcode/easy/UniqueEmailAddresses929Test.java new file mode 100644 index 0000000..c703011 --- /dev/null +++ b/src/test/java/com/leetcode/easy/UniqueEmailAddresses929Test.java @@ -0,0 +1,35 @@ +package com.leetcode.easy; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class UniqueEmailAddresses929Test { + private UniqueEmailAddresses929 solution; + + @BeforeEach + void setUp() { + solution = new UniqueEmailAddresses929(); + } + + @Test + void testExample1() { + String[] emails = { + "test.email+alex@leetcode.com", + "test.e.mail+bob.cathy@leetcode.com", + "testemail+david@lee.tcode.com" + }; + assertEquals(2, solution.numUniqueEmails(emails)); + } + + @Test + void testExample2() { + String[] emails = { + "a@leetcode.com", + "b@leetcode.com", + "c@leetcode.com" + }; + assertEquals(3, solution.numUniqueEmails(emails)); + } +}