중복된 문자 제거
문제 #
문자열 my_string
이 매개변수로 주어집니다. my_string
에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
- 제한사항
- 1 ≤
my_string
≤ 110 my_string
은 대문자, 소문자, 공백으로 구성되어 있습니다.- 대문자와 소문자를 구분합니다.
- 공백(" “)도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
- 1 ≤
- 입출력 예
my_string result “people” “peol” “We are the world” “We arthwold”
나의 풀이 #
import java.util.*;
class Solution {
public String solution(String my_string) {
String[] strArr = my_string.split("");
List<String> strList = new ArrayList<>();
for(int i = 0; i<strArr.length; i++){
if(strList.contains(strArr[i])==false){
strList.add(strArr[i]);
}
}
String answer = "";
for (String s : strList){
answer += s;
}
return answer;
}
}
- ArrayList를 사용하여 입력 문자열에서 찾은 고유한 문자를 저장합니다.
- 입력 문자열을 개별 문자의 배열로 분할한 다음, 배열을 반복하여 각 문자가 이미 ArrayList에 있는지 확인합니다.
- 문자가 ArrayList에 아직 없으면 목록에 추가합니다.
- 마지막으로 ArrayList의 모든 고유 문자를 연결하여 출력 문자열을 형성합니다.
다른 사람의 풀이 #
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);
}
}
- ArrayList를 사용하는 대신 LinkedHashSet을 만들어 고유한 문자를 저장합니다.
- Set은 요소의 중복을 허용하지 않는 컬렉션이며 LinkedHashSet은 요소가 집합에 추가될 때 순서를 유지하는 Set의 하위 클래스입니다.
- LinkedHashSet를 사용하면 코드에서 문자의 원래 순서를 유지하면서 중복 항목을 자동으로 제거할 수 있습니다.
- 마지막으로 join() 메서드를 사용하여 LinkedHashSet의 모든 문자를 연결하여 출력 문자열을 형성합니다.
관련개념 학습 #
- 관련 개념을 찾아서 공부한 내용을 적는다.
ctrl + p
로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.- 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.