Study/java

[Java] 문자열을 거꾸로 뒤집는 여러가지 방법

 

자바에서 문자열을 뒤집는 여러가지 방법을 설명드리겠습니다.

 

반복문 사용

단순 반복문을 사용해서 문자열을 뒤집을 수 있습니다.

public static void main(String[] args) {
    String s = "12345";

    String reverseStr = "";
    for (int i = 1; i <= s.length(); i++) {
        reverseStr += s.charAt(s.length() - i);
    }
    System.out.println("reverseStr = " + reverseStr); // 54321
}

 

뒤집을 문자열을 담을 새로운 문자열을 생성하고 기존 문자열을 뒤에서부터 한글자씩 가져와서 새로운 문자열에 합치는 코드입니다.

 

배열 사용

문자열을 배열로 변환해서 뒤집을 수 있습니다.

public static void main(String[] args) {
    String s = "12345";

    char[] chars = s.toCharArray();
    int left = 0;
    int right = chars.length - 1;
    while (left < right) {
        char temp = chars[left];
        chars[left] = chars[right];
        chars[right] = temp;
        left++;
        right--;
    }
    String reverse = new String(chars);
    System.out.println("reverse = " + reverse); // 54321
}

 

문자열을 char 배열로 변환 후에 0번째는 마지막 요소랑, 1번째는 마지막에서 1을 뺀 위치에 있는 요소랑, 그렇게 마지막 원소랑 0번째 요소까지 교환을 진행합니다. 

 

 

 

 

StringBuilder reverse 함수 사용

public static void main(String[] args) {
    String s = "12345";

    StringBuilder sb = new StringBuilder(s);
    sb.reverse();
    System.out.println("sb = " + sb); // 54321
}

 

StringBuilder에는 reverse() 메소드가 있습니다.

문자열을 StringBuilder 객체로 변환해서 reverse 메소드를 사용하면 문자열을 쉽게 뒤집을 수 있습니다.

 

Stream 사용

public static void main(String[] args) {
    String s = "12345";

    String reverse = IntStream.range(0, s.length())
                              .mapToObj(i -> s.charAt(s.length() - i - 1))
                              .map(Object::toString)
                              .collect(Collectors.joining());
    System.out.println("reverse = " + reverse); // 54321
}

 

IntStream을 사용해서 0에서 문자열 길이까지 반복합니다.

배열을 사용했을 때처럼 서로 반대되는 위치에 있는 요소끼리 뒤집어줍니다.

그리고 문자열로 변환한 후 Collectors.joining()으로 합쳐줍니다.

 

 

읽으면 좋은 글

[Java] Stream - map: 스트림 값 변환

 

[Java] Stream - map: 스트림 값 변환

자바 Stream의 map 메서드는 주어진 함수를 적용한 새로운 스트림을 만들어주는 메서드입니다. mapmap은 다음과 같이 사용합니다.List list = new ArrayList();list.add(1);list.add(2);list.add(3);list.stream().map(num ->

priming.tistory.com