코린이의 소소한 공부노트

[LeetCode/Easy] 929. Unique Email Addresses 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 929. Unique Email Addresses

무지맘 2022. 12. 10. 20:24

1. Input

1) 이메일 주소가 담겨있는 문자열 배열 emails

 

2. Output

1) 다음 규칙을 적용했을 때, 중복을 제외한 이메일 주소의 개수

2) 규칙

- @을 기준으로 앞부분은 local name, 뒷부분은 domain name이다.

- local name에 점(‘.’)이 있다면 무시된다.

- local name에 플러스(‘+’)가 있다면 플러스 뒷부분은 전부 무시된다.

 

3. Constraint

1) 1 <= emails.length <= 100

2) 1 <= emails[i].length <= 100

3) emails[i]는 영어 소문자와 특수문자 '+.@'로만 이루어져 있다.

4) emails[i] 1개에는 ‘@'1개씩만 포함하고 있다.

5) 빈 문자열은 없다.

6) local name'+'로 시작하지 않는다.

7) domain name".com"으로 끝난다.

 

4. Example

Input: emails = ["test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]

Output: 2

설명:

- "test.email+alex@leetcode.com" -> local name의 점 무시, + 이후 무시 -> testemail@leetcode.com

- "testemail+david@lee.tcode.com" -> local name+ 이후 무시 -> "testemail@lee.tcode.com"

- 2개가 중복되지 않으므로 2를 반환한다.

 

5. Code

1) 첫 코드(2022/07/27)

for(int i=0 ; i<emails.length ; i++){
String[] add = emails[i].split("@");
add[0] = add[0].replaceAll("[.]","");
for(int j=0 ; j<add[0].length() ; j++)
    if(add[0].charAt(j)=='+'){
        add[0] = add[0].substring(0,j);
        break;
    }
    emails[i] = add[0] + "@" + add[1];
}

List<String> list = new ArrayList();
for(int i=0 ; i<emails.length ; i++){
    if(!list.contains(emails[i]))
        list.add(emails[i]);
}
return list.size();