สมมติว่าเรามีสตริง 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