소문자 영어 문자를 포함하는 문자열 str과 배열 arr의 배열이 있다고 가정합니다. 여기서 arr[i] =[direction, amount] −
-
방향은 0(왼쪽 이동의 경우) 또는 1(오른쪽 이동의 경우)일 수 있습니다.
-
amount는 문자열 s가 이동할 양입니다.
-
1만큼 왼쪽으로 시프트하면 s의 첫 번째 문자를 제거하고 끝에 추가합니다.
-
마찬가지로 1만큼 오른쪽으로 시프트하면 s의 마지막 문자를 제거하고 시작 부분에 추가합니다.
문자열을 첫 번째 인수로, shift 데이터를 포함하는 배열을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
함수는 배열을 반복하고 문자열에서 필요한 이동을 수행하고 마지막으로 새 문자열을 반환해야 합니다.
예를 들어 -
입력 문자열과 배열이 -
인 경우const str = 'abc'; const arr = [[0, 1], [1, 2]];
그러면 출력은 다음과 같아야 합니다. -
const output = 'cab';
왜냐하면,
[0,1]은 1만큼 왼쪽으로 이동을 의미합니다. "abc" -> "bca"
[1,2]는 2만큼 오른쪽으로 이동함을 의미합니다. "bca" -> "cab"
예시
이에 대한 코드는 -
const str = 'abc'; const arr = [[0, 1], [1, 2]]; const performShifts = (str = '', arr = []) => { if(str.length < 2){ return str; }; let right = 0 let left = 0; for(let sub of arr){ if(sub[0] == 0){ left += sub[1]; }else{ right += sub[1]; }; }; if(right === left){ return str; } if(right > left){ right = right - left; right = right % str.length; return str.substring(str.length - right) + str.substring(0, str.length - right); }else{ left = left - right; left = left % str.length; return str.substring(left) + str.substring(0,left); }; }; console.log(performShifts(str, arr));
출력
콘솔의 출력은 -
cab