#1165
Easy Algorithms Single row keyboard
Hash Table String
87.8% acceptance
Mar 31, 2026
545
23
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.
Solution
Rust
Time O(n)
Space O(1)
impl Solution {
pub fn calculate_time(keyboard: String, word: String) -> i32 {
let mut pos = [0i32; 26];
for (i, b) in keyboard.bytes().enumerate() {
pos[(b - b'a') as usize] = i as i32;
}
let mut total = 0;
let mut curr = 0i32;
for b in word.bytes() {
let p = pos[(b - b'a') as usize];
total += (curr - p).abs();
curr = p;
}
total
}
}