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

Java에서 문자열을 뒤집는 가장 쉬운 방법은 무엇일까?


내장 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]