세 개의 구분자 JAVA
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181862
문제 설명 : 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.
내가 작성한 코드 : 생각의 흐름대로... 일단 문제를 풀고나서 다른 사람들이 어떻게 했는지 보고 배우게 되었다!
import java.util.*;
class Solution {
public List<String> solution(String myStr) {
String str = "";
List<String> arraysTest = new ArrayList<>();
List<String> arraysList = new ArrayList<>();
char[] ch = myStr.toCharArray();
for(int i=0; i<ch.length; i++){
if ( ch[i] == 'a' || ch[i] == 'b' || ch[i] == 'c' ) {
ch[i] = ' ';
}
if( ch[i] != ' '){
str += ch[i];
} else {
arraysTest.add(str);
str = "";
}
} //END for
if(str.length() != 0){
arraysTest.add(str);
}
for ( String item : arraysTest) {
if ( !item.isEmpty() ) {
arraysList.add(item);
}
}
if (arraysList.size() == 0){
arraysList.add("EMPTY");
}
return arraysList;
}
}
다른 사람풀이중에 가장 내가 이해하기 쉽고 좋았던 코드!
replaceAll 메소드를 사용 하면서 정규 표현식을 사용한 코드이다. 오.. 이런생각을 나는 미처 하지 못했는데! 배울만 하다!
[] : 대괄호는 문자의 집합이나 범위.
| : or 연산
+ : 플러스 기호는 앞 문자가 하나 이상.
정규표현식 뜻은 다음 블로그를 참고해서 알게됐다!
참고한 블로그 : https://zhfvkq.tistory.com/5
728x90
300x250