Java 문자열 뒤집기와 문자 카운팅 구현

1. 문자열 뒤집기

목표: 입력 문자열을 뒤집어 출력합니다. 예를 들어 "HelloWorld"는 "dlroWolleH"가 됩니다. 빈 문자열이나 공백만 있는 문자열도 처리해야 합니다.

접근 방식

  • 문자열을 문자 배열로 변환한 후 양쪽 끝에서부터 교환
  • 두 포인터(left, right)를 사용하여 중앙까지 반복

코드

public class StringReversal {
    public static void main(String[] args) {
        String input = "HelloWorld";
        String reversed = reverseString(input);
        System.out.println("원본 문자열: " + input);
        System.out.println("뒤집힌 문자열: " + reversed);
    }

    public static String reverseString(String text) {
        if (text == null || text.isEmpty()) {
            return text;
        }
        char[] charArray = text.toCharArray();
        int start = 0;
        int end = charArray.length - 1;
        
        while (start < end) {
            char temp = charArray[start];
            charArray[start] = charArray[end];
            charArray[end] = temp;
            start++;
            end--;
        }
        return new String(charArray);
    }
}

2. 문자 유형별 개수 세기

목표: 입력 문자열에서 대문자, 소문자, 숫자, 공백, 기타 문자의 개수를 각각 카운팅합니다. 범위 검사는 ASCII 값을 기준으로 합니다.

접근 방식

  • Scanner를 사용하여 사용자 입력 받기
  • 문자열을 문자 배열로 변환
  • 각 문자의 ASCII 범위에 따라 카운터 증가

코드

import java.util.Scanner;

public class CharacterCounter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("문자열을 입력하세요: ");
        String input = scanner.nextLine();
        scanner.close();

        char[] chars = input.toCharArray();
        int upperCount = 0;   // 대문자
        int lowerCount = 0;   // 소문자
        int digitCount = 0;   // 숫자
        int spaceCount = 0;   // 공백
        int otherCount = 0;   // 기타 문자

        for (char ch : chars) {
            if (ch >= 'A' && ch <= 'Z') {
                upperCount++;
            } else if (ch >= 'a' && ch <= 'z') {
                lowerCount++;
            } else if (ch >= '0' && ch <= '9') {
                digitCount++;
            } else if (ch == ' ') {
                spaceCount++;
            } else {
                otherCount++;
            }
        }

        System.out.println("대문자 개수: " + upperCount);
        System.out.println("소문자 개수: " + lowerCount);
        System.out.println("숫자 개수: " + digitCount);
        System.out.println("공백 개수: " + spaceCount);
        System.out.println("기타 문자 개수: " + otherCount);
    }
}

태그: java String char 배열 ASCII 문자열 처리

6월 18일 22:22에 게시됨