본문 바로가기
algorithm/Programmers

[JAVA] 모음 제거

by 이쟝 2023. 1. 24.

문제 설명

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항
  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예my_stringresult
"bus" "bs"
"nice to meet you" "nc t mt y"

입출력 예 설명

입출력 예 #1

  • "bus"에서 모음 u를 제거한 "bs"를 return합니다.

입출력 예 #1

  • "nice to meet you"에서 모음 i, o, e, u를 모두 제거한 "nc t mt y"를 return합니다.

1. 기본 for문(모음이 아닌것만 answer ++) 

class Solution {
    public String solution(String my_string) {
        String answer = "";
        for(char ch : my_string.toCharArray()) {
            if(ch != 'a' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'u') {
                answer += ch; 
            } 
        }
        return answer;
    }
}

2. replaceAll( ) 사용 

class Solution {
    public String solution(String my_string) {
        String answer = my_string.replaceAll("[aeiou]", "");
        return answer;
    }
}

3. StringBuilder 모음인 것만

class Solution {
    public String solution(String my_string) {
        StringBuilder sb = new StringBuilder();

        for(char c: my_string.toCharArray()) {
            if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') continue;
            sb.append(c);
        }
        return sb.toString();
    }
}
break    만나는 즉시 반복문 전체 탈출
continue   만나면 해당 반복부분 탈출 후 다음반복실행

모음 아닌 것만 하지 않고(!=), continue를 사용해도 가능..! 

문자열을 합칠 때 stringbuilder가 훨씬 빠르고,, replaceAll이 문자열 안에서 특정 문자 찾을 때 좋다..! 생각하기..!

stringbuilder를 하지않고 answer += 이렇게 했더니 훨씬 느리다,,