1165. Single-Row Keyboard π
Description
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.
Example 1:
Input: keyboard = "abcdefghijklmnopqrstuvwxyz", word = "cba" Output: 4 Explanation: The index moves from 0 to 2 to write 'c' then to 1 to write 'b' then to 0 again to write 'a'. Total time = 2 + 1 + 1 = 4.
Example 2:
Input: keyboard = "pqrstuvwxyzabcdefghijklmno", word = "leetcode" Output: 73
Constraints:
keyboard.length == 26
keyboard
contains each English lowercase letter exactly once in some order.1 <= word.length <= 104
word[i]
is an English lowercase letter.
Solutions
Solution 1: Hash Table or Array
We can use a hash table or an array \(pos\) of length \(26\) to store the position of each character on the keyboard, where \(pos[c]\) represents the position of character \(c\) on the keyboard.
Then we traverse the string \(word\), using a variable \(i\) to record the current position of the finger, initially \(i = 0\). Each time, we calculate the position \(j\) of the current character \(c\) on the keyboard, and increase the answer by \(|i - j|\), then update \(i\) to \(j\). Continue to traverse the next character until the entire string \(word\) is traversed.
After traversing the string \(word\), we can get the answer.
The time complexity is \(O(n)\), and the space complexity is \(O(C)\). Here, \(n\) is the length of the string \(word\), and \(C\) is the size of the character set. In this problem, \(C = 26\).
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|