코딩테스트 연습 > 코딩테스트 입문 > 중복된 문자 제거
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | result |
---|---|
"people" | "peol" |
"We are the world" | "We arthwold" |
import java.util.*;
class Solution {
public String solution(String my_string) {
String[] list = Arrays.stream(my_string.split(""))
.distinct()
.toArray(String[]::new);
String answer = String.join("", list);
return answer;
}
}
import java.util.stream.Collectors;
class Solution {
public String solution(String my_string) {
return my_string.chars()
.mapToObj(Character::toString)
.distinct()
.collect(Collectors.joining());
}
}
split을 사용해서 문자열을 문자 배열로 만들었다.
my_string.chars()
: 문자열을 IntStream으로 변환합니다.
각 문자는 유니코드 정수 값(int) 으로 표현됩니다.
예: "abc" → [97, 98, 99]
mapToObj(Character::toString)
: IntStream의 각 정수(int)를 문자(char)로 바꾸고 → 문자열(String)으로 변환
Character::toString은 i -> Character.toString((char)i)와 같은 의미입니다.
결과는 Stream이 됩니다.
예: [97, 98, 99, 97] → ["a", "b", "c", "a"]
.distinct()
: 중복된 문자열(문자)을 제거합니다.
예: ["a", "b", "c", "a"] → ["a", "b", "c"]
.collect(Collectors.joining())
: 스트림의 문자열 요소들을 하나의 문자열로 합칩니다.
예: ["a", "b", "c"] → "abc"