더북(TheBook)

구현하기 쉽고 빠른 또 다른 해법은 문자열 내 문자를 순회하며(한 번 순회) 각 문자를 주어진 문자와 비교하는 것이다. 같을 때마다 카운터를 1 증가시킨다.

public static int countOccurrencesOfACertainCharacter(
    String str, char ch) {
  int count = 0;

  for (int i = 0; i < str.length(); i++) {
    if (str.charAt(i) == ch) {
      count++; 
    }
  }

  return count;
}

유니코드 대리 쌍을 처리하는 해법은 이 책의 예제 코드에 들어 있다. 자바 8 함수형 스타일로 문제를 해결하려면 filter()reduce()를 사용한다. 다음은 filter()를 사용한 코드다.

public static long countOccurrencesOfACertainCharacter(
    String str, char ch) {
  return str.chars()
    .filter(c -> c == ch)
    .count();
}

유니코드 대리 쌍을 처리하는 해법은 이 책의 예제 코드에 들어 있다.

TIP ≣ 외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.countMatches()와 스프링 프레임워크의 StringUtils.countOccurrencesOf(), 구아바의 CharMatcher.is().countIn()을 활용한다.

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