Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 문자열 내에서 시프트 수행

<시간/>

소문자 영어 문자를 포함하는 문자열 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