Chúng ta cần viết một hàm JavaScript nhận vào ba đối số: đầu tiên là một chuỗi (str), sau đó là hai số (m và n). Các số m và n chỉ định số lượng dịch trái và dịch phải tương ứng.
Chúng ta định nghĩa các thuật ngữ như sau:
Dịch trái (Left Shift) - Một quay vòng đơn của chuỗi trong đó ký tự đầu tiên trở thành ký tự cuối cùng và tất cả các ký tự khác được dịch một chỉ số sang trái. Ví dụ: abcde thành bcdea sau một lần dịch trái và cdeab sau hai lần.
Dịch phải (Right Shift) - Một quay vòng đơn của chuỗi trong đó ký tự cuối cùng trở thành ký tự đầu tiên và tất cả các ký tự khác được dịch sang phải. Ví dụ: abcde thành eabcd sau một lần dịch phải và deabc sau hai lần.
Vì vậy, cơ bản hàm nên thực hiện số lượng dịch trái và dịch phải được chỉ định và cuối cùng trả về chuỗi kết quả.
Ví dụ
Code cho việc này sẽ là:
const str = 'abcdef';
const getShiftedString = (str, leftShifts, rightShifts) =>
shiftByAmount(shiftByAmount(str, leftShifts), -rightShifts);
// Hàm phụ: số âm dịch phải, số dương dịch trái
const shiftByAmount = (str, leftShifts) => {
leftShifts = leftShifts % str.length;
return str.slice(leftShifts) + str.slice(0, leftShifts);
};
console.log(getShiftedString(str, 3, 2));Kết quả
Kết quả hiển thị trong console sẽ là:
bcdefa