문제
내가 작성한 오답
: 빈 문자열 포함
import java.util.Arrays;
class Solution {
public String[] solution(String myString) {
String[] answer = myString.split("x");
Arrays.sort(answer);
return answer;
}
}내가 작성한 정답
import java.util.*;
class Solution {
public String[] solution(String myString) {
List<String> answer = new ArrayList<>();
for(String s:myString.split("x")) {
if(!s.isEmpty()) answer.add(s);
}
answer.sort(null);
return answer.toArray(String[]::new);
}
}
import java.util.Arrays;
class Solution {
public String[] solution(String myString) {
return Arrays.stream(myString.split("x"))
.filter(s->!s.isEmpty())
.sorted()
.toArray(String[]::new);
}
}다른 사람들의 정답
import java.util.*;
class Solution {
public String[] solution(String myString) {
// StringTokenizer 클래스는 문자열을 특정 구분자(델리미터)를 기준으로 나누어 토큰 단위로 분리하는 데 사용
StringTokenizer st = new StringTokenizer(myString, "x");
int idx = 0, N = st.countTokens();
String[] result = new String[N];
for (int n = 0;n < N;n++)
result[idx++] = st.nextToken();
Arrays.sort(result);
return result;
}
}StringTokenizer는 빈 문자열은 토큰으로 인식하지 않는다
split은 빈 문자열도 토큰으로 포함할 수 있다.
Java의 StringTokenizer 클래스는 문자열을 특정 구분자(델리미터)를 기준으로 나누어 토큰 단위로 분리하는 데 사용하는 도구이다.
StringTokenizer는 split()보다 간단한 인터페이스로 문자열 분리에 자주 쓰이며, 토큰 단위로 순차 접근이 가능합니다. 다만, split()은 정규식 기반이며 배열로 반환한다
생성자
StringTokenizer(String str)
기본 구분자(공백)를 기준으로 문자열을 쪼갬
StringTokenizer(String str, String delim)
지정한 구분자(delim)를 기준으로 문자열을 쪼갬
StringTokenizer(String str, String delim, boolean returnDelims)
구분자도 토큰으로 포함할지 여부 설정
주요 메소드
boolean hasMoreTokens()
분리된 토큰이 더 있으면 true 반환
String nextToken()
다음 토큰을 반환
int countTokens()
남은 토큰 개수 반환
Share article