001 문자 개수 세기
문자열에서 문자 개수를 세려면 각 문자(#, $, % 같은 특수 문자 포함)를 하나씩 보며 나머지 문자들과 비교해야 한다. 비교하다 똑같은 문자를 찾으면 숫자 카운터를 1씩 증가시키며 현재 개수를 기록한다.
이 문제의 해법은 두 가지다.
첫 번째 해법은 문자열 내 문자를 순회하며 Map을 사용해 문자를 키로, 빈도수를 값으로 저장하는 방법이다. 현재 문자가 Map에 없으면 (character, 1)을 추가한다. 현재 문자가 Map에 있으면 (character, occurrences+1)처럼 빈도수를 1 증가시킨다. 코드로 살펴보자.
public Map<Character, Integer> countDuplicateCharacters(String str) {
Map<Character, Integer> result = new HashMap<>();
// for(char ch: str.toCharArray()) { ... }를 사용해도 된다
for (int i = 0; i<str.length(); i++) {
char ch = str.charAt(i);
result.compute(ch, (k, v) -> (v == null) ? 1 : ++v);
}
return result;
}