더북(TheBook)

또 다른 해법은 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;
}

두 번째 경우라면 해법에 PatternMatcher 클래스를 활용해 다음과 같이 간단한 구현한다.

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;
}

훌륭하다! 문자열을 다루는 또 다른 문제를 살펴보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.