[LeetCode 344] Reverse String (Java)

codingNoob12·2025년 4월 23일
0

알고리즘

목록 보기
65/73


풀이

이 문제는 배열 내부에서 문자열을 뒤집는 문제이다.

이는 정말 간단하게 투포인터로 풀어낼 수 있다. 한 포인터는 0부터 오른쪽으로, 다른 포인터는 끝 위치에서부터 왼쪽으로 이동해가며, 두 포인터가 각각 가리키는 위치의 원소들을 swap해주면 되는 문제이다.

이를 코드로 옮기면 다음과 같다.

class Solution {
    public void reverseString(char[] s) {
        int i = 0, j = s.length - 1;
        while (i < j) {
            char temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            
            i++;
            j--;
        }
    }
}

이를 재귀함수로 구현하면 다음과 같다.

class Solution {
    public void reverseString(char[] s) {
        reverseString(s, 0, s.length - 1);
    }

    public void reverseString(char[] s, int i, int j) {
        if (i >= j) 
            return;
        
        char temp = s[i];
        s[i] = s[j];
        s[j] = temp;

        reverseString(s, i + 1, j - 1);
    }
}
profile
나는감자

0개의 댓글