Giả sử chúng ta có một chuỗi str chứa các chữ cái tiếng Anh viết thường và một mảng các mảng arr, trong đó arr [i] =[hướng, số tiền] -
-
hướng có thể là 0 (đối với sang trái) hoặc 1 (đối với sang phải).
-
số tiền là số tiền mà chuỗi s sẽ được dịch chuyển.
-
Dịch sang trái 1 có nghĩa là xóa ký tự đầu tiên của s và nối nó vào cuối.
-
Tương tự, dịch phải 1 có nghĩa là loại bỏ ký tự cuối cùng của s và thêm nó vào đầu.
Chúng tôi được yêu cầu viết một hàm JavaScript lấy chuỗi làm đối số đầu tiên và mảng chứa dữ liệu shift làm đối số thứ hai.
Hàm sẽ lặp lại trên mảng và thực hiện các thay đổi cần thiết trong chuỗi và cuối cùng trả về chuỗi mới.
Ví dụ -
Nếu chuỗi đầu vào và mảng là -
const str = 'abc'; const arr = [[0, 1], [1, 2]];
Sau đó, đầu ra phải là -
const output = 'cab';
bởi vì,
[0,1] có nghĩa là dịch chuyển sang trái 1. “abc” -> “bca”
[1,2] có nghĩa là chuyển sang phải bằng 2. “bca” -> “cab”
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
cab