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

Java에서 문자열 내 한 쌍의 문자를 교환하는 프로그램

이 글에서는 Java에서 문자열에 포함된 한 쌍의 문자를 서로 교환(swap)하는 방법을 알아봅니다. Java의 String은 불변(immutable) 객체이므로 직접 수정할 수 없습니다. 따라서 먼저 주어진 문자열을 toCharArray() 메서드를 이용해 char 배열로 변환한 뒤, 배열 인덱스를 통해 원하는 위치의 문자를 교환하는 방식으로 구현합니다.

아래 예제를 통해 살펴보겠습니다.

입력 값

입력 문자열: Java program

기대 출력 결과

교환 후 문자열: Javg proaram

알고리즘

Step 1 - 시작(START)
Step 2 - 문자열 변수 input_string, char 배열 character, 문자열 객체 result를 선언한다.
Step 3 - 값을 정의한다.
Step 4 - 문자열을 char 배열로 변환한다.
Step 5 - 임시 변수(temp)를 사용하여 두 문자를 교환한다.
Step 6 - char 배열을 다시 문자열로 변환한다.
Step 7 - 결과 문자열을 화면에 출력한다.
Step 8 - 종료(STOP)

예제 1

이 예제에서는 모든 연산을 하나의 main 함수 안에서 순서대로 수행합니다.

public class SwapCharacter {
    public static void main(String args[]) {
        String input_string = "Java program";
        System.out.println("정의된 문자열: " + input_string);
        int i = 3, j = input_string.length() - 4;
        char character[] = input_string.toCharArray();
        char temp = character[i];
        character[i] = character[j];
        character[j] = temp;
        String result = new String(character);
        System.out.println("
교환 후 문자열: " + result);
    }
}

출력 결과

정의된 문자열: Java program

교환 후 문자열: Javg proaram

예제 2

이 예제에서는 교환 로직을 별도의 함수로 분리하여 객체 지향 프로그래밍(OOP) 스타일로 구현합니다. 이렇게 하면 코드의 재사용성과 가독성이 향상됩니다.

public class SwapCharacter {
    static char[] swap(String input_string, int i, int j) {
        char character[] = input_string.toCharArray();
        char temp = character[i];
        character[i] = character[j];
        character[j] = temp;
        return character;
    }
    public static void main(String args[]) {
        String input_string = "Java program";
        System.out.println("정의된 문자열: " + input_string);
        System.out.println("
교환 후 문자열: ");
        System.out.println(swap(input_string, 3, input_string.length() - 4));
    }
}

출력 결과

정의된 문자열: Java program

교환 후 문자열:
Javg proaram

핵심 정리

문자열의 두 문자를 교환할 때는 다음 세 가지 단계가 핵심입니다.
toCharArray()로 문자열을 char 배열로 변환
② 임시 변수를 활용해 두 인덱스의 문자를 교환
new String(charArray)으로 다시 문자열 생성

이 과정의 시간 복잡도는 문자열 길이에 비례하는 O(n)이며, 공간 복잡도 역시 새로운 char 배열을 만들기 때문에 O(n)입니다. 인덱스만 변경하면 문자열의 어느 위치든 자유롭게 교환할 수 있습니다.