[프로그래머스] 문자열 여러 번 뒤집기

Seah Lee·2023년 6월 26일
0

프로그래머스

목록 보기
33/57

class Solution {
    public String solution(String my_string, int[][] queries) {
         StringBuilder sb = new StringBuilder(my_string);
        
        for (int i = 0; i < queries.length; i++) {
            int start = queries[i][0];
            int end = queries[i][1];
            
            String substring = sb.substring(start, end + 1);
            String reversed = new StringBuilder(substring).reverse().toString();
            sb.replace(start, end + 1, reversed);
        }
        
        return sb.toString();
    }
}
class Solution {
    public String solution(String my_string, int[][] queries) {
        StringBuilder sb = new StringBuilder(my_string);
        
        for (int i = 0; i < queries.length; i++) {
            int start = queries[i][0];
            int end = queries[i][1];
            
            reverseSubstring(sb, start, end);
        }
        
        return sb.toString();
    }
    
    private void reverseSubstring(StringBuilder sb, int start, int end) {
        String substring = sb.substring(start, end + 1);
        String reversed = new StringBuilder(substring).reverse().toString();
        sb.replace(start, end + 1, reversed);
    }
}

sb.substring으로 구간 잘라내기 가능
.reverse().toString() 하면 뒤집기 가능
.replace 하면 구간 자른곳에 대체로 집어넣기 가능

아직 재귀가 익숙하지 않아서 위처럼 풀었는데
친절히 챗지피티의 도움으로 아래와 같은 구문도 가능허다 이말

[다른 사람의 풀이]
toCharArray로 풀어보고 싶었는데
푸신 분이 계시다

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;
        }
    }
}

흠 슬슬 재귀를 많이 쓰시는 것 같다.

profile
성장하는 개발자

0개의 댓글