ปัญหา
ได้รับสตริง str และอาร์เรย์คำสั่ง arr ที่แต่ละอิลิเมนต์เป็น [direction, amount] โดย direction: 0=ซ้าย, 1=ขวา ต้องดำเนินการเลื่อนตามลำดับและคืนสตริงผลลัพธ์
ตัวอย่าง
const str = 'abc'; const arr = [[0, 1], [1, 2]];
ขั้นตอน: [0,1] ซ้าย 1 → "bca", [1,2] ขวา 2 → "cab" → ผลลัพธ์ 'cab'
โค้ดตัวอย่าง
const str = 'abc';
const arr = [[0, 1], [1, 2]];
const performShifts = (str = '', arr = []) => {
if(str.length < 2){ return str; }
let right = 0, 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