Solution 1) 내 풀이

class Solution {
    public String solution(String my_string, int[][] queries) {
        char[] arr = my_string.toCharArray();
        for (int i = 0; i < queries.length; i++) {
            int start = queries[i][0];
            int end = queries[i][1];
            for (int j = start; j <= (start + end) / 2; j++) {
                char tmp = arr[j];
                arr[j] = arr[start + end - j];
                arr[start + end - j] = tmp;
            }
        }
        return new String(arr);
    }
}
new String(arr)로 return 시킬 수 있다.
(String 클래스의 생성자 중 하나는 char  배열을 인수로 받아 문자열로 변환해주기 떄문)

Solution 2) 다른 사람의 풀이

class Solution {

    char[] arr;
    public String solution(String my_string, int[][] queries) {
        arr = my_string.toCharArray();
        
        for (int[] query : queries) {
            reverse(query[0], query[1]);
        }
        return new String(arr);
    }

    private void reverse(int s, int e) {
        while (s < e) {
            char temp = arr[s];
            arr[s++] = arr[e];
            arr[e--] = temp;
        }
    }
}
여러 방식이 보이지만 reverse 메서드를 새로 만들어 풀이한 이 방법이 내 마음에 들었다.
s와 e의 idx를 각각 늘리고 줄이는 작업을 반복하여 s가 e를 넘어서기 전에 멈추는 방식으로 깔끔해보인다.

+ Recent posts