문제 설명
문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.

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];
while (start < end) {
char temp = sb.charAt(start);
sb.setCharAt(start, sb.charAt(end));
sb.setCharAt(end, temp);
start++;
end--;
}
}
return sb.toString();
}
}
기본적으로 자바의 String은 불변 : 한 번 만들어지면 내용을 바꿀 수 없음
-> "abc" + "d" → 새로운 문자열 "abcd"가 생성됨 → 문자열이 길거나 반복 작업 많으면 비효율
StringBuilder는 가변 문자열 : 내부 배열을 가지고 있어 문자열을 직접 수정 가능
-> 추가, 삭제, 삽입, 뒤집기 등 반복 작업 효율적
주요 메서드
->append(String s) / 문자열 끝에 추가 / sb.append("world");
->insert(int index, String s) / 특정 위치에 삽입 / sb.insert(1, "abc");
->delete(int start, int end) / start~end-1 위치 삭제 / sb.delete(0, 2);
->setCharAt(int index, char c) / 특정 위치 문자 변경 / sb.setCharAt(0, 'H');
->charAt(int index) / 특정 위치 문자 반환 / char c = sb.charAt(0);
->reverse() / 문자열 뒤집기 / sb.reverse();
->length() / 문자열 길이 / int len = sb.length();
->toString() / StringBuilder → String 변환 / String str = sb.toString();