자바(Java)에서 문자열에 포함된 문자들이 알파벳 순서대로 정렬되어 있는지 확인해야 하는 경우가 종종 있습니다. 예를 들어 입력값 검증이나 데이터 정렬 상태 점검 등에 활용할 수 있습니다. 아래 예제 코드를 통해 간단하게 구현하는 방법을 알아보겠습니다.
예제 코드
public class Demo {
static boolean alphabetical_order(String my_str) {
int str_len = my_str.length();
for (int i = 1; i < str_len; i++) {
if (my_str.charAt(i) < my_str.charAt(i - 1)) {
return false;
}
}
return true;
}
static public void main(String[] args) {
String my_str = "abcmnqxz";
if (alphabetical_order(my_str)) {
System.out.println("The letters are in alphabetical order.");
} else {
System.out.println("The letters are not in alphabetical order.");
}
}
}실행 결과
The letters are in alphabetical order.
코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
- alphabetical_order 메서드: Demo 클래스 내부에 정의된 정적(static) 메서드로, 문자열을 매개변수로 받아 알파벳 순서 여부를 검사합니다.
- 순서 검사 로직: 문자열의 두 번째 문자부터 마지막 문자까지 반복하면서, 현재 문자(charAt(i))가 바로 앞 문자(charAt(i - 1))보다 작은지 비교합니다. 자바에서 char 타입은 유니코드 값으로 비교되기 때문에, 현재 문자가 앞 문자보다 작다는 것은 알파벳 순서가 어긋났음을 의미합니다.
- 반환 값: 순서가 어긋나는 지점이 발견되면 즉시 false를 반환하고, 끝까지 검사했음에도 문제가 없다면 true를 반환합니다.
- main 메서드: 테스트용 문자열 "abcmnqxz"를 정의한 뒤 alphabetical_order 메서드를 호출하고, 반환 결과에 따라 알파벳 순서 여부를 콘솔에 출력합니다.
이 방식은 문자열을 한 번만 순회하므로 시간 복잡도가 O(n)으로 매우 효율적입니다. 대소문자가 섞인 문자열을 검사해야 한다면, 비교 전에 toLowerCase() 또는 toUpperCase() 메서드로 문자열을 통일해 주는 것이 좋습니다.