g0901_1000.s0929_unique_email_addresses.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0901_1000.s0929_unique_email_addresses;
// #Easy #Array #String #Hash_Table #2022_03_29_Time_10_ms_(92.59%)_Space_45.3_MB_(79.48%)
import java.util.HashSet;
import java.util.Set;
/**
* 929 - Unique Email Addresses\.
*
* Easy
*
* Every **valid email** consists of a **local name** and a **domain name** , separated by the `'@'` sign. Besides lowercase letters, the email may contain one or more `'.'` or `'+'`.
*
* * For example, in `"[email protected]"`, `"alice"` is the **local name** , and `"leetcode.com"` is the **domain name**.
*
* If you add periods `'.'` between some characters in the **local name** part of an email address, mail sent there will be forwarded to the same address without dots in the local name. Note that this rule **does not apply** to **domain names**.
*
* * For example, `"[email protected]"` and `"[email protected]"` forward to the same email address.
*
* If you add a plus `'+'` in the **local name** , everything after the first plus sign **will be ignored**. This allows certain emails to be filtered. Note that this rule **does not apply** to **domain names**.
*
* * For example, `"[email protected]"` will be forwarded to `"[email protected]"`.
*
* It is possible to use both of these rules at the same time.
*
* Given an array of strings `emails` where we send one email to each `emails[i]`, return _the number of different addresses that actually receive mails_.
*
* **Example 1:**
*
* **Input:** emails = ["[email protected]","[email protected]","[email protected]"]
*
* **Output:** 2
*
* **Explanation:** "[email protected]" and "[email protected]" actually receive mails.
*
* **Example 2:**
*
* **Input:** emails = ["[email protected]","[email protected]","[email protected]"]
*
* **Output:** 3
*
* **Constraints:**
*
* * `1 <= emails.length <= 100`
* * `1 <= emails[i].length <= 100`
* * `emails[i]` consist of lowercase English letters, `'+'`, `'.'` and `'@'`.
* * Each `emails[i]` contains exactly one `'@'` character.
* * All local and domain names are non-empty.
* * Local names do not start with a `'+'` character.
* * Domain names end with the `".com"` suffix.
**/
public class Solution {
public int numUniqueEmails(String[] emails) {
Set set = new HashSet<>();
for (String s : emails) {
StringBuilder sb = new StringBuilder();
int i = 0;
while (i < s.length()) {
char c = s.charAt(i);
if (c == '+' || c == '@') {
sb.append('@');
i = s.indexOf("@") + 1;
sb.append(s.substring(i));
break;
} else if (c != '.') {
sb.append(c);
}
i++;
}
set.add(sb.toString());
}
return set.size();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy