Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เลื่อนตัวอักษรในสตริงตามคำสั่ง (Shift Operations) ใน JavaScript

ปัญหา

ได้รับสตริง 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