문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 1 <= my_string <= 110
- my_string은 대문자, 소문자, 공백으로 이루어져 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
풀이 방법
중복되는 문자를 찾으려면 반복문을 여러 번 사용하는 경우가 있지만 이 경우 너무 비효율적.
Set 사용하기!!
import java.util.*;
class Solution {
public String solution(String my_string) {
LinkedHashSet<Character> hs = new LinkedHashSet<>();
for (char c : my_string.toCharArray()){
hs.add(c);
}
StringBuilder sb = new StringBuilder();
for (char ch : hs){
sb.append(ch);
}
return sb.toString();
}
}
1. LinkedHashSet을 사용한다. LinkedHashSet은 순서를 반영하는 LinkedList와 중복을 방지하는 HashSet으로 구성되어 있다. 제한 사항을 모두 만족하기 위해서 LinkedHashSet이 가장 적합하다.
2. StringBuilder를 사용해서 문자들을 하나의 문자열로 만들었다.
'Coding Test' 카테고리의 다른 글
| [java] LinkedHashSet (0) | 2024.07.01 |
|---|---|
| [Java] toCharArray() (0) | 2024.07.01 |
| [python] 구슬을 나누는 경우의 수 (0) | 2023.03.08 |
| [python] 진료 순서 정하기 (0) | 2023.03.07 |
| [python] 외계행성의 나이 (0) | 2023.03.07 |