본문 바로가기
Java

[Java] 문자열 뒤집기

by 작은돼지 2022. 8. 13.

문제

문자열을 넣으면 역순으로 뒤집어서 반환하는 reverseString() 메서드를 만든다.

예) ABCDE -> EDCBA

	public static void main(String[] args) {

		String input = "ABCDE";
		String result = reverseString(input);

		System.out.println(result); // expect: EDCBA

	}

 

1번 방법

static String reverseString(String input) {
		char[] charArray = input.toCharArray(); // 입력받은 문자열을 문자 배열로 변환

		// 초침을 바꾸면서 서로 값을 swap하는 방식을 사용하기 위한 변수 선언 및 초기화
		int left = 0; // 좌측 초침 설정
		int right = charArray.length - 1; // 우측 초침(인덱스)은 길이-1로 설정

		while (left < right) { // 맨 좌측, 맨 우측부터 서로 교환
			char temp = charArray[left]; // 한쪽 값을 swap용 temp에 저장.
			charArray[left] = charArray[right]; // 덮어쓰기
			charArray[right] = temp; // 백업한 좌측 값을 우측에 저장

			// 좌우측 1씩 초침 변경
			left++;
			right--;
		}

		String result = new String(charArray); // 문자 배열을 String 객체로 생성
		return result;
	}

좌, 우측을 가리키는 초침 역할을 하는 변수를 선언하여

양쪽 값을 바꾸는 방식을 이용했다.

 

2번 방법

static String reverseString(String input) {
		StringBuilder reversedString = new StringBuilder();
		int inputLength = input.length();

		for (int i = 1; i <= inputLength; i++) {
			reversedString.append(input.charAt(inputLength - i));
		}

		return reversedString.toString();
	}

StringBuilder를 생성하여

원본(input) 문자열의 맨 끝을 따와서 StringBuilder에 하나씩 추가하는 식으로 했다.