Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ดำเนินการกะภายในสตริงใน JavaScript


สมมติว่าเรามีสตริง str ที่มีตัวอักษรภาษาอังกฤษตัวพิมพ์เล็ก และอาร์เรย์ของอาร์เรย์ arr โดยที่ arr[i] =[direction, amount] −

  • ทิศทางสามารถเป็น 0 (สำหรับกะซ้าย) หรือ 1 (สำหรับกะขวา)

  • จำนวน คือจำนวนเงินที่จะเปลี่ยนสตริง s

  • การเลื่อนไปทางซ้าย 1 หมายถึงลบอักขระตัวแรกของ s และต่อท้ายอักขระนั้นต่อท้าย

  • ในทำนองเดียวกัน การเลื่อนขวาทีละ 1 หมายถึงลบอักขระตัวสุดท้ายของ s และเพิ่มไปที่จุดเริ่มต้น

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงเป็นอาร์กิวเมนต์แรกและอาร์เรย์ที่มีข้อมูล shift เป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรวนซ้ำในอาร์เรย์และทำการเปลี่ยนแปลงที่จำเป็นในสตริง และสุดท้ายส่งคืนสตริงใหม่

ตัวอย่างเช่น −

หากสตริงอินพุตและอาร์เรย์เป็น −

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