모음 제거
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
my_string은 소문자와 공백으로 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 1,000
💻 풀이
replaceAll() 을 사용해 모음을 없애준다.[] 은 정규 표현식으로 [abc] 일 경우 a, b, c 중 하나라도 포함되면 매칭된다.[a-z] 문자의 범위 설정[^abc] a,b,c를 제외한 문자와 매칭⌛ 시간 0.09ms ~ 0.13ms
public String solution(String my_string) {
return my_string.replaceAll("[aeiou]", "");
}
💻 풀이
chars() : String 객체의 메서드로 정수 스트림(IntStream)으로 변환해 준다.
※ 각 문자열은 아스키코드 값으로 표현됨
filter(x -> "aeiou".indexOf(x) == -1)
※ filter 는 특정 조건을 만족하는 요소만 남겨준다.
※ 즉, aeiou를 포함하면 0 이상의 값, 미포함 할 경우 -1을 반환되어 모음을 제외한 문자가 남게된다.
mapToObj(x -> String.valueOf((char) x))
※ mapToObj 는 정수를 객체로 변환해준다.
※ x 에는 아스키코드 값이 담겨있기 때문에 char 로 변환한 후
※ String.valueOf() 로 문자열로 만들어 준다.
.collect(Collectors.joining())
※ Collectors.joining() 은 문자열을 공백 없이 이어붙여 새로운 문자열을 반환해준다.
정리
1. String 객체를 정수 스트림으로 변환해준다.
2. 모음을 포함하지 않는 값만 남겨준다.
3. 남은 값을 String으로 변환해준다.
4. 변환된 값을 이어붙어 return 한다.
⌛ 시간 1.92ms ~ 14.88ms
전체코드
import java.util.stream.Collectors;
public String solution2(String my_string) {
return my_string.chars()
.filter(x -> "aeiou".indexOf(x) == -1)
.mapToObj(x -> String.valueOf((char)x))
.collect(Collectors.joining());
}