Giả sử chúng ta có một từ khóa, thay vì ánh xạ khóa kiểu qwerty truyền thống, ánh xạ các khóa chỉ đơn giản theo thứ tự bảng chữ cái tiếng Anh, tức là abcde ...
Trước khi đi sâu vào vấn đề, chúng ta phải đưa ra hai giả định sau -
-
Hiện tại đầu ngón tay của chúng ta đang đặt ở chỉ số 0, tức là phím 'a
-
Thời gian cần thiết để di chuyển từ khóa này sang khóa khác là hiệu số tuyệt đối của chỉ mục của chúng, ví dụ thời gian cần thiết để chuyển từ 'a' sang 'k' sẽ là | 0 - 10 | =10
Chúng tôi được yêu cầu viết một hàm JavaScript có một chuỗi các bảng chữ cái viết thường tiếng Anh và tính toán và trả về thời gian chúng tôi cần để nhập chuỗi.
Ví dụ -
Nếu chuỗi đầu vào là -
const str = 'dab';
Đầu ra
const output = 7;
bởi vì các chuyển động đã diễn ra -
'a' -> 'd' = 3 'd' -> 'a' = 3 'a' -> 'b' = 1
Ví dụ
Mã cho điều này sẽ là -
const str = 'dab'; const findTimeTaken = (str = '') => { let timeSpent = 0; const keyboard = 'abcdefghijklmnopqrstuvwxyz'; let curr = 'a'; for(let i = 0; i < str.length; i++){ const el = str[i]; const fromIndex = keyboard.indexOf(curr); const toIndex = keyboard.indexOf(el); const time = Math.abs(fromIndex - toIndex); curr = el; timeSpent += time; }; return timeSpent; }; console.log(findTimeTaken(str));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
7