더북(TheBook)

017 문자열 내 부분 문자열 빈도수 세기

 

문자열에서 또 다른 문자열의 빈도수를 세는 문제는 최소 다음 두 가지로 해석할 수 있다.

111111번 나온다.

111112번 나온다.

첫 번째 경우라면 해법에 String.indexOf() 메서드를 사용하면 된다. 이 메서드의 특징 중 하나는 문자열에 명시한 부분 문자열이 처음 나오는 인덱스를 반환한다는 점이다(나오지 않으면 -1을 반환한다). 이 메서드를 사용하는 해법은 단순히 주어진 문자열을 순회하면서 주어진 부분 문자열이 나오는 횟수를 센다. 위치 0부터 시작해 부분 문자열이 나오지 않을 때까지 계속 순회한다.

public static int countStringInString(String string, String toFind) {
  int position = 0;
  int count = 0;
  int n = toFind.length();

  while ((position = string.indexOf(toFind, position)) != -1) {
    position = position + n;
    count++;
  }

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