Cho chuỗi str chứa chữ thường, và mảng arr với arr[i] = [direction, amount]:
direction: 0 (dịch trái) hoặc 1 (dịch phải).
amount: số lượng dịch chuyển.
Dịch trái 1: bỏ ký tự đầu, thêm vào cuối.
Dịch phải 1: bỏ ký tự cuối, thêm vào đầu.
Cần viết hàm JS nhận chuỗi và mảng dịch chuyển, thực hiện các dịch chuyển và trả về chuỗi mới.
Ví dụ:
Nếu chuỗi và mảng:
const str = 'abc'; const arr = [[0, 1], [1, 2]];
Kết quả:
const output = 'cab';
giải thích: [0,1] dịch trái 1: "abc" -> "bca"; [1,2] dịch phải 2: "bca" -> "cab"
Ví dụ
Mã thực hiện:
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));
Kết quả
Kết quả in ra console:
cab