在 JavaScript 中執行字串移位


假設我們有一個包含小寫英文字母的字串 str,以及一個數組 arr,其中 arr[i] = [direction, amount] -

  • direction 可以是 0(左移)或 1(右移)。

  • amount 是字串 s 要移位的數量。

  • 左移 1 表示刪除 s 的第一個字元並將其追加到末尾。

  • 類似地,右移 1 表示刪除 s 的最後一個字元並將其新增到開頭。

我們需要編寫一個 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

更新於: 2021年2月27日

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.