프로그래머스 - 중복된 문자 제거(Level 1)
2024. 1. 25. 21:39ㆍ코딩테스트 정리(자바)
728x90
import java.util.*;
class Solution {
public String solution(String my_string) {
Set <String> set=new LinkedHashSet<>(); //순서보장, HashSet은 순서보장X
String[] str=my_string.split("");
for(String s:str){
set.add(s);
}
String[] s=set.toArray(new String[0]);
//set을 배열로, set은 인덱스로 접근하지 못함.
StringBuilder sb=new StringBuilder();
for(String s1:s){
sb.append(s1);
}
return sb.toString();
}
}
1. HashSet은 넣은 순서대로 보관되지 않는다.
순서를 보장받고 싶다면 LinkedHashSet을 사용해야 한다
2. set은 인덱스로 접근하지 못한다. -> iterator로 접근은 가능
리스트처럼 원소 하나씩 리턴하지 못함. -> get 메서드가 없음
3. set을 배열로 만드는 법
String[] str=set.toArray(new String[0]);
자꾸 까먹는다.. 기억하자
HashSet을 이용한 풀이
: set을 통해 해당 문자열이 있는지 확인 .
set에 넣지않고 바로 StringBuilder에 담아서 순서문제 해결.
import java.util.*;
class Solution {
public String solution(String my_string) {
Set <String> set=new HashSet<>();
String[] str=my_string.split("");
StringBuilder sb=new StringBuilder();
for(String s:str){
if(set.contains(s))
continue;
set.add(s);
sb.append(s);
}
return sb.toString();
}
}
char로 확인하는 것도 가능
import java.util.*;
public class Solution {
public String solution(String myString) {
Set<Character> used = new HashSet<>();
StringBuilder builder = new StringBuilder();
for (char c : myString.toCharArray()) {
if (used.contains(c)) continue;
used.add(c);
builder.append(c);
}
return builder.toString();
}
}728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 완주하지 못한 선수(Level 1) (0) | 2024.01.29 |
|---|---|
| 프로그래머스 - 없는 숫자 더하기(Level 1) (2) | 2024.01.28 |
| 프로그래머스 - 가장 큰수 (Level 2) (2) | 2024.01.24 |
| 프로그래머스 - 문자열 내 마음대로 정렬하기 (Level 1) (2) | 2024.01.23 |
| 프로그래머스 - 전화번호 목록 (Level 2) (0) | 2024.01.23 |