문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string ≤ 110
- my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
입출력 설명
입출력 예 #1
- "people"에서 중복된 문자 "p"와 "e"을 제거한 "peol"을 return합니다.
입출력 예 #2
- "We are the world"에서 중복된 문자 "e", " ", "r" 들을 제거한 "We arthwold"을 return합니다.
코드
import java.util.*;
class Solution {
public String solution(String my_string) {
String answer = "";
Set<String> set = new LinkedHashSet<>();
String strCheck;
for(int i=0; i<my_string.length(); i++) {
strCheck = my_string.charAt(i) + "";
if(!set.contains(strCheck))
set.add(strCheck);
}
Iterator<String> it = set.iterator();
while(it.hasNext()) {
answer += it.next();
}
return answer;
}
}
풀이
순서가 있는 HashSet인 LinkedHashSet 을 set으로 선언한다. 반복문을 이용해 my_string 문자열의 문자들을 하나씩 분류해 contains()를 통해 set에 포함되어 있지 않으면 set에 해당 문자를 추가해준다. 컬렉션에서 요소를 순차 검색하기 위해 Iterator를 선언하여 set의 내용들을 answer에 붙여준다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
import java.util.*;
class Solution {
public String solution(String my_string) {
String[] answer = my_string.split("");
Set<String> set = new LinkedHashSet<String>(Arrays.asList(answer));
return String.join("", set);
}
}
my_string의 문자들을 분류해서 answer 배열에 넣은 후, LinkedHashSet을 이용해 중복을 제거하고 join을 통해 set의 문자들을 합쳐 반환한다.
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0; i<my_string.length(); i++){
//my_string.indexOf(my_string.charAt(i));
if(i==my_string.indexOf(my_string.charAt(i)))
answer+=my_string.charAt(i);
}
return answer;
}
}
String.indexOf()를 통해 my_string 문자열의 i번째에 해당하는 문자가 처음 나오는 위치를 가져와 그것이 i와 일치하면 중복되지 않는 것을 의미하므로 해당 문자를 answer에 추가한다.
정리
join()
: 문자열 합치는 방법.
indexOf()
: 문자열에서 특정 문자 또는 문자열의 첫 번째 등장 위치를 반환
'Coding Test' 카테고리의 다른 글
230927 인덱스 바꾸기 - Level 0 (0) | 2023.09.27 |
---|---|
230927 대문자와 소문자 - Level 0 (0) | 2023.09.27 |
230926 문자열 정렬하기 (1) - Level 0 (0) | 2023.09.26 |
230925 삼각형의 완성조건 (1) - Level 0 (0) | 2023.09.25 |
230925 머쓱이보다 키 큰 사람 - Level 0 (0) | 2023.09.25 |