문제
내가 작성한 정답
class Solution {
public String solution(String my_string) {
String answer = "";
for(char a : my_string.toCharArray()){
if(answer.indexOf(String.valueOf(a))== -1){
answer += a;
}
}
return answer;
}
}
indexOf
특정 문자 또는 문자열이 주어진 문자열에서 처음으로 나타나는 위치(인덱스)를 반환
인덱스: 찾은 문자 또는 문자열의 첫 번째 위치 (0부터 시작).
-1: 찾는 문자나 문자열이 존재하지 않을 경우
다른 사람들의 정답
import java.util.*;
class Solution {
public String solution(String my_string) {
String[] answer = my_string.split("");
// LinkedHashSet을 이용하여 중복을 제거하고 순서도 유지했다.
// Arrays.asList : 배열을 List로 변환
Set<String> set = new LinkedHashSet<String>(Arrays.asList(answer));
return String.join("", set);
}
}
String.join(구분자, 합칠 요소들이 있는 Iterable(ArrayList, HashSet, LinkedList…))
: 문자열을 하나의 문자열로 합친다.
import java.util.stream.Collectors;
class Solution {
public String solution(String my_string) {
return my_string.chars() //IntStream
.mapToObj(Character::toString) //Stream<String>
.distinct() // 중복제거 + 각 문자가 처음 등장하는 순서대로 유지
.collect(Collectors.joining()); // 문자열로 결합
}
}
Share article