728x90
반응형
https://leetcode.com/problems/unique-email-addresses/submissions/
import java.util.*;
class Solution {
public int numUniqueEmails(String[] emails) {
int N=emails.length;
Set<String> set = new HashSet<>();
//2. Loop
//: 로컬 이름 부분과 도메인 이름 부분으로 나눈다.
for(int i=0;i<N;i++){
//StringBuilder sb = new StringBuilder();
//특정 문자 기준 분할 : split()
String[] Name = emails[i].split("@");
String LocalName=Name[0];
String DomainName=Name[1];
//로컬이름부
StringBuilder sb = new StringBuilder();
for(char x : LocalName.toCharArray()){
if(x=='+') {
break;
}
else if(x=='.'){
continue;
}
else{
sb.append(x);
}
}
LocalName=sb.toString();
String answer=LocalName+"@"+DomainName;
set.add(answer);
}
return set.size();
}
}
class Solution {
public int numUniqueEmails(String[] emails) {
//이메일 : 로컬이름과 도메인이름으로 구성
//소문자, '.', '+'가 포함될 수 있다.
//로컬 이름 규칙
//'.'의 경우 제거하며, '+'의 경우 이후 문자들이 무시된다.
//동일한 이메일을 제거해야하므로 set을 사용한다.
Set<String> set = new HashSet<>();
for(String s : emails){
String[] tmp =s.split("@");
String localName=tmp[0];
String domainName=tmp[1];
String newLocal="";
for(char c:localName.toCharArray()){
if(c=='.') continue;
if(c=='+') break;
else newLocal+=c;
}
set.add(newLocal+"@"+domainName);
}
return set.size();
}
}
-> 새로운 String을 만드는 것보다 StringBuilder를 이용하면 효율성을 높일 수 있다.
class Solution {
public int numUniqueEmails(String[] emails) {
//이메일 : 로컬이름과 도메인이름으로 구성
//소문자, '.', '+'가 포함될 수 있다.
//로컬 이름 규칙
//'.'의 경우 제거하며, '+'의 경우 이후 문자들이 무시된다.
//동일한 이메일을 제거해야하므로 set을 사용한다.
Set<String> set = new HashSet<>();
for(String s : emails){
String[] tmp =s.split("@");
String localName=tmp[0];
String domainName=tmp[1];
StringBuilder sb = new StringBuilder();
for(char c:localName.toCharArray()){
if(c=='.') continue;
if(c=='+') break;
else sb.append(c);
}
set.add(sb.toString()+"@"+domainName);
}
return set.size();
}
}
728x90
반응형
'Java > Java 알고리즘 LeetCode' 카테고리의 다른 글
[LeetCode- Ch.2 정렬 & 검색] 2. K번째 제일 큰 원소 (+ PriorityQueue) (0) | 2022.10.28 |
---|---|
[LeetCode- Ch.2 정렬 & 검색] 1. 제로 이동 (+ allMatch, noneMatch, for-while) (0) | 2022.10.28 |
[LeetCode- Ch.1 문자열] 4. 플러스 원 (0) | 2022.10.28 |
[LeetCode- Ch.1 문자열] 3. 라이센스 키 포맷 (+ StringBuilder.insert(위치,문자)) (0) | 2022.10.28 |
[LeetCode- Ch.1 문자열] 2. 보석과 돌 (+ toCharArray) (0) | 2022.10.28 |