문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
모든 유효한 이메일 주소는 로컬 이름과 도메인 이름이 @ 기호로 구분되어 구성된다. 소문자 외에도 이메일 주소에는 하나 이상의 . 또는 + 기호가 포함될 수 있다.
이메일 주소의 로컬 이름 부분에 마침표를 추가하면 해당 주소로 전송된 메일은 로컬 이름에 마침표가 없는 동일한 주소로 전달된다. 단, 이 규칙은 도메인 이름에는 적용되지 않는다.
만약 로컬 이름에 +기호가 있다면, 첫 번째 더하기 기호 뒤의 모든 내용은 무시된다. 이를 통해 특정 이메일을 필터링할 수 있다. 단, 이 규칙은 도메인 이름에는 적용되지 않는다.
이 두 규칙을 동시에 사용할 수 있다.
문자열 배열 emails[i]에 각 이메일 주소로 하나씩 이메일을 보낼 때, 실제로 이메일을 수신한 서로 다른 이메일 주소의 수를 반환해라.
#1
Input: emails = ["test.email+alex@leetcode.com", "test.e.mail+bob.cathy@leetcode.com", "testemail+david@lee.tcode.com"]
Output: 2
Explanation: testemail@leetcode.com과 testemail@lee.tcode.com이 실제로 메일을 수신한다.
#2
Input: emails = ["a@leetcode.com", "b@leetcode.com", "c@leetcode.com"]
Output: 3
class Solution {
public int numUniqueEmails(String[] emails) {
Set<String> result = new HashSet<>();
for(String email : emails){
String[] parts = email.split("@");
String[] local = parts[0].split("\\+");
result.add(local[0].replace(".", "") + "@" + parts[1]);
}
return result.size();
}
}