Java/문자열

[Java]문자열 뒤집는 방법

DevStory 2022. 8. 18.

문자열 뒤집는 방법

문자열을 뒤집는다는 의미는 문자열에서 문자의 위치를 반전하는 것입니다.

 

예를 들어, 문자열 "Hello"를 입력하면 "olleH"가 출력됩니다. 

 

이번 포스팅은 Java에서 문자열을 뒤집는 여러 방법 중 코드가 간결하고 사용하기 쉬운 방법을 소개합니다.


방법 1. 반복문

첫 번째 방법으로 가장 심플한 방법인 반복문을 사용합니다.

 

문자열의 마지막 위치부터 반복문을 실행하며, charAt() 메서드로 해당 위치의 문자를 새로운 문자열에 할당합니다.

public static void main(String args[]) {
  String strValue = "Hello, Java";
  String reverseStrValue = "";

  for (int index = strValue.length() - 1; index >= 0; index--) {
    reverseStrValue += strValue.charAt(index);
  }
  
  System.out.println("원본: " + strValue);
  System.out.println("결과: " + reverseStrValue);
}

[실행 결과]

원본: Hello, Java
결과: avaJ ,olleH

방법 2. StringBuilder 또는 StringBuffer 클래스의 reverse 메서드

String 클래스와 달리 StringBuilder 클래스와 StringBuffer 클래스는 문자열을 뒤집을 수 있는 reverse() 메서드를 제공합니다.

 

StringBuilder 생성자 함수에 문자열을 전달하고 StringBuilder 객체에서 reverse() 메서드를 호출합니다.

 

다음 예제는 StringBuilder 클래스의 reverse() 메서드를 사용하여 문자열을 뒤집습니다.

public static void main(String args[]) {
  String strValue = "Hello, Java";

  StringBuilder sb = new StringBuilder(strValue).reverse();

  System.out.println("원본: " + strValue);
  System.out.println("결과: " + sb.toString());
}

[실행 결과]

원본: Hello, Java
결과: avaJ ,olleH

이번에는 StringBuffer 클래스를 사용하여 문자열을 뒤집습니다.

 

문자열을 뒤집는 방법은 StringBuilder 클래스와 동일합니다.

public static void main(String args[]) {
  String strValue = "Hello, Java";

  StringBuffer sb = new StringBuffer(strValue).reverse();

  System.out.println("원본: " + strValue);
  System.out.println("결과: " + sb.toString());
}

[실행 결과]

원본: Hello, Java
결과: avaJ ,olleH

방법 3. Collections의 reverse 메서드와 Stream API

마지막 방법으로 문자열을 Collections에서 제공하는 reverse() 메서드와 Java 1.8 이상부터 사용할 수 있는 Stream API를 사용합니다.

 

먼저, Character 타입의 빈 ArrayList를 생성합니다.

 

문자열의 각 문자를 ArrayList에 추가 후 Collections.reverse() 메서드에 ArrayList를 전달합니다.

 

Collections.reverse() 메서드가 호출되면, ArrayList의 요소가 반전됩니다.

 

ArrayList를 Stream에서 제공하는 기능을 사용하여 문자열로 변환합니다.

public static void main(String args[]) {
  String strValue = "Hello, Java";
  // 빈 ArrayList 생성
  List<Character> charList = new ArrayList<>();

  // 문자열의 각 문자를 ArrayList에 추가
  for (char ch : strValue.toCharArray()) {
    charList.add(ch);
  }

  // ArrayList의 요소가 반전
  Collections.reverse(charList);

  // Character 타입의 ArrayList를 문자열로 변환
  String reverseStrValue = charList.stream()
                                   .map(String::valueOf)
                                   .collect(Collectors.joining());

  System.out.println("원본: " + strValue);
  System.out.println("결과: " + reverseStrValue);
}

[실행 결과]

원본: Hello, Java
결과: avaJ ,olleH
반응형

댓글