이 글에서는 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)입니다. 인덱스만 변경하면 문자열의 어느 위치든 자유롭게 교환할 수 있습니다.