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;
}
}
}
흠 슬슬 재귀를 많이 쓰시는 것 같다.