내장 reverse() 메서드 사용하기
StringBuffer 클래스는 reverse()라는 메서드를 제공합니다. 이 메서드는 현재 StringBuffer 객체의 내용을 뒤집은 후, 그 결과를 담은 새로운 StringBuffer 객체를 반환합니다. Java에서 문자열(String)을 뒤집는 가장 간단하고 손쉬운 방법입니다. 사용 절차는 다음과 같습니다.
뒤집고자 하는 문자열을 매개변수로 전달하여 StringBuffer 객체를 생성합니다.
생성된 객체에서 reverse() 메서드를 호출합니다.
toString() 메서드를 사용하여 결과를 다시 String 타입으로 변환합니다.
예제 코드
public class Sample {
public static void main(String args[]) {
String str = new String("Hello how are you");
StringBuffer sb = new StringBuffer(str);
String str2 = sb.reverse().toString();
System.out.println(str2);
}
}실행 결과
uoy era woh olleH
이번에는 문자열을 뒤집는 또 다른 두 가지 방법을 살펴보겠습니다.
재귀(Recursion)를 이용한 방법
재귀(Recursion)란 함수가 자기 자신을 다시 호출하는 프로그래밍 기법을 의미합니다. 아래 Java 프로그램은 재귀 호출을 활용하여 문자열을 뒤집습니다. 문자열이 비어 있으면 그대로 반환하고, 그렇지 않으면 첫 번째 문자를 나머지 부분 뒤에 붙이는 방식으로 동작합니다.
예제 코드
public class StringReverse {
public String reverseString(String str) {
if(str.isEmpty()) {
return str;
}else {
return reverseString(str.substring(1))+str.charAt(0);
}
}
public static void main(String[] args) {
StringReverse obj = new StringReverse();
String result = obj.reverseString("Tutorialspoint");
System.out.println(result);
}
}실행 결과
tniopslairotuT
toCharArray()를 이용한 방법
문자열을 문자 배열(char 배열)로 변환한 뒤, 배열 내부의 문자들을 서로 맞바꾸는 방식으로도 문자열을 뒤집을 수 있습니다.
배열을 뒤집으려면 첫 번째 요소와 마지막 요소를, 두 번째 요소와 뒤에서 두 번째 요소를 차례대로 서로 교환하면 됩니다. 만약 배열의 길이가 홀수라면 가운데 요소는 그대로 두면 됩니다.
i가 배열의 앞쪽 요소 인덱스라고 할 때, 마지막 요소의 인덱스는 (배열 길이 - i - 1)입니다. 따라서 배열의 시작부터 중간 지점까지 array[i]와 array[(배열 길이 - i - 1)]를 서로 교환해 주면 문자열이 뒤집힙니다.
예제 코드
import java.util.Arrays;
public class StringReverse {
public static void main(String[] args) {
String str = "Tutorialspoint";
char[] myArray = str.toCharArray();
int size = myArray.length;
for (int i = 0; i < size / 2; i++) {
char temp = myArray[i];
myArray[i] = myArray[size - 1 - i];
myArray[size - 1 - i] = temp;
}
System.out.println("Array after reverse:: ");
System.out.println(Arrays.toString(myArray));
}
}실행 결과
Array after reverse:: [t, n, i, o, p, s, l, a, i, r, o, t, u, T]