Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}