또 다른 해법은 String.split() 메서드를 사용한다. 기본적으로 이 해법은 주어진 부분 문자열을 구분자로 사용해 주어진 문자열을 분할한다. 결과로 나온 String[] 배열의 길이가 실제 빈도수와 동일하다.
public static int countStringInString(String string, String toFind) {
int result = string.split(Pattern.quote(toFind), -1).length - 1;
return result < 0 ? 0 : result;
}
두 번째 경우라면 해법에 Pattern과 Matcher 클래스를 활용해 다음과 같이 간단한 구현한다.
public static int countStringInString(String string, String toFind) {
Pattern pattern = Pattern.compile(Pattern.quote(toFind));
Matcher matcher = pattern.matcher(string);
int position = 0;
int count = 0;
while (matcher.find(position)) {
position = matcher.start() + 1;
count++;
}
return count;
}
훌륭하다! 문자열을 다루는 또 다른 문제를 살펴보자.