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

자바(Java) 문자열에서 가장 많이 등장하는 문자 출력하는 방법

자바 String 클래스란?

자바의 String 클래스문자열(character strings)을 표현하는 데 사용됩니다. 자바 프로그램에 등장하는 모든 문자열 리터럴은 String 클래스의 인스턴스로 구현되며, 문자열은 상수로 취급되기 때문에 한 번 생성되면 그 값을 변경할 수 없습니다. 이러한 특성을 불변성(immutable)이라고 합니다.

아래 예제 프로그램은 주어진 문자열에서 가장 많이 등장하는 문자를 찾아 출력하는 방법을 보여줍니다.

예제 코드

public class MaxOccuredCharacterTest {
    public static void main(String[] args) {
        String str1 = maxOccuredChar("tutorialspoint");
        System.out.println(str1);
        String str2 = maxOccuredChar("AABBAABBCCAABBAA");
        System.out.println(str2);
        String str3 = maxOccuredChar("111222333444333222111");
        System.out.println(str3);
    }
    public static String maxOccuredChar(String str) {
        char[] array = str.toCharArray();
        int maxCount = 1;
        char maxChar = array[0];
        for(int i=0, j=0; i < str.length()-1; i=j) {
            int count = 1;
            while(++j < str.length() && array[i] == array[j]) {
                count++;
            }
            if (count > maxCount) {
                maxCount = count;
                maxChar = array[i];
            }
        }
        return (maxChar + " = " + maxCount);
    }
}

동작 원리

이 알고리즘은 다음과 같은 단계로 동작합니다.

1. toCharArray() 메서드로 입력 문자열을 문자 배열로 변환합니다.
2. 두 개의 인덱스(i, j)를 활용해 연속으로 반복되는 동일 문자의 개수를 세어 count 변수에 저장합니다.
3. 현재 count가 기존의 maxCount보다 크면 maxCount와 maxChar를 갱신합니다.
4. 모든 탐색이 끝나면 최대 빈도 문자와 그 횟수를 문자열 형태로 반환합니다.

참고: 이 구현은 문자의 전체 등장 횟수가 아니라 연속 구간 기준의 최대 반복 횟수를 계산합니다. 예를 들어 "AABBAABBCCAABBAA"에서 A는 총 8번 등장하지만, 연속 구간의 최대 길이는 2이므로 결과는 "A = 2"가 됩니다.

실행 결과

t = 1
A = 2
1 = 3