자바 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