-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy path1165-single-row-keyboard.js
More file actions
39 lines (34 loc) · 1.06 KB
/
1165-single-row-keyboard.js
File metadata and controls
39 lines (34 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* 1165. Single-Row Keyboard
* https://leetcode.com/problems/single-row-keyboard/
* Difficulty: Easy
*
* There is a special keyboard with all keys in a single row.
*
* Given a string keyboard of length 26 indicating the layout of the keyboard (indexed
* from 0 to 25). Initially, your finger is at index 0. To type a character, you have
* to move your finger to the index of the desired character. The time taken to move
* your finger from index i to index j is |i - j|.
*
* You want to type a string word. Write a function to calculate how much time it takes
* to type it with one finger.
*/
/**
* @param {string} keyboard
* @param {string} word
* @return {number}
*/
var calculateTime = function(keyboard, word) {
const map = new Map();
for (let i = 0; i < keyboard.length; i++) {
map.set(keyboard[i], i);
}
let currentPosition = 0;
let result = 0;
for (const char of word) {
const targetPosition = map.get(char);
result += Math.abs(currentPosition - targetPosition);
currentPosition = targetPosition;
}
return result;
};