문자열 my_string
과 이차원 정수 배열 queries
가 매개변수로 주어집니다. queries
의 원소는 [s, e] 형태로, my_string
의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string
에 queries
의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string
은 영소문자로만 이루어져 있습니다.my_string
의 길이 ≤ 1,000queries
의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string
의 길이를 만족합니다.queries
의 길이 ≤ 1,000my_string | queries | result |
---|---|---|
"rermgorpsam" | [[2, 3], [0, 7], [5, 9], [6, 10]] | "programmers" |
예제 1번의 my_string
은 "rermgorpsam"이고 주어진 queries
를 순서대로 처리하면 다음과 같습니다.
queries | my_string |
---|---|
"rermgorpsam" | |
[2, 3] | "remrgorpsam" |
[0, 7] | "progrmersam" |
[5, 9] | "prograsremm" |
[6, 10] | "programmers" |
따라서 "programmers"를 return 합니다.
slice()
,splice()
, 문자열은 배열이 아니다!
function solution(my_string, queries) {
var answer = my_string.split('');
let result =''
for(let x of queries){
let num = x[1]-x[0]
result=answer.slice(x[0],x[1]+1).reverse();
answer.splice(x[0],num+1);
answer.splice(x[0],0,...result)
}
return answer.join('');
}
let str = my_string.split('');
queries.forEach(([start, end]) => {
const changeStr = str.slice(start, end + 1);
str.splice(start, changeStr.length, ...changeStr.reverse());
});
return str.join('');
function solution(my_string, queries) {
return queries.reduce((arr, [s, e]) => {
const words = arr.slice(s, e + 1)
words.reverse()
arr.splice(s, e - s + 1, ...words)
return arr
}, Array.from(my_string)).join('')
}
function solution(my_string, queries) {
const str = [...my_string];
queries.forEach(([s,e]) => {
while(s < e) {
[str[s], str[e]] = [str[e], str[s]];
s++; e--;
}
})
return str.join("");
}