Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java HashMap으로 문자열 내 각 문자의 발생 횟수 계산하기

개요

문자열 처리에서 자주 접하는 작업 중 하나는 각 문자가 몇 번 나타나는지 세는 것입니다. 이번 글에서는 HashMap을 활용해 문자열 내 각 문자의 발생 횟수를 효율적으로 계산하는 방법을 예제와 함께 살펴보겠습니다.

문자열 준비

다음과 같은 문자열이 있다고 가정해 보겠습니다.

String myStr = "thisisit";

HashMap으로 발생 횟수 계산하기

각 문자의 발생 횟수를 저장하기 위해 HashMap<Character, Integer>를 사용합니다. 문자열을 순회하면서 containsKey() 메서드로 해당 문자가 이미 맵에 존재하는지 확인하고, 존재하면 기존 값을 1 증가시키며, 존재하지 않으면 1로 초기화합니다. 이때 charAt() 메서드를 사용해 특정 인덱스의 문자를 가져옵니다.

HashMap <Character, Integer> hashMap = new HashMap<>();
for (int i = myStr.length() - 1; i >= 0; i--) {
    if (hashMap.containsKey(myStr.charAt(i))) {
        int count = hashMap.get(myStr.charAt(i));
        hashMap.put(myStr.charAt(i), ++count);
    } else {
        hashMap.put(myStr.charAt(i),1);
    }
}

위 코드는 문자열의 끝에서 시작 부분까지 역순으로 순회합니다. HashMap은 요소의 순서를 보장하지 않으므로 순회 방향은 결과에 영향을 주지 않습니다.

전체 예제 코드

다음은 각 문자의 발생 횟수를 계산하는 완성된 프로그램입니다.

import java.util.HashMap;
public class Demo {
    public static void main(String[] args) {
        String myStr = "thisisit";
        System.out.println("String ="+myStr);
        HashMap <Character, Integer> hashMap = new HashMap<>();
        for (int i = myStr.length() - 1; i >= 0; i--) {
            if (hashMap.containsKey(myStr.charAt(i))) {
                int count = hashMap.get(myStr.charAt(i));
                hashMap.put(myStr.charAt(i), ++count);
            } else {
                hashMap.put(myStr.charAt(i),1);
            }
        }
        System.out.println("Counting occurrences of each character = "+hashMap);
    }
}

실행 결과

String =thisisit
Counting occurrences of each character = {s=2, t=2, h=1, i=3}

핵심 메서드 정리

  • containsKey(): 맵에 해당 키(문자)가 이미 존재하는지 확인합니다.
  • charAt(): 문자열에서 지정된 인덱스 위치의 문자를 반환합니다.
  • get() / put(): 기존 개수를 가져와 1 증가시킨 뒤 다시 저장합니다.

이 방식은 문자열을 한 번만 순회하면 되므로 시간 복잡도가 O(n)으로, 길이가 긴 문자열에서도 매우 효율적으로 동작합니다.