Minimum Time to Type Word Using Special Typewriter

This problem can be solved by iterating through the word, calculating the time needed to move the pointer to each character and then typing it.

We can start by setting the current position as ‘a’ and then iterating through the word. For each character, we calculate the minimum time to reach it from the current position by going either clockwise or counterclockwise, and add the typing time, which is always 1 second.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
    def minTimeToType(self, word: str) -> int:
        # The total time required
        total_time = 0
        # The current position of the pointer, starting at 'a'
        current_position = 'a'

        # Iterate through the word
        for char in word:
            # Calculate the clockwise and counterclockwise distances between the current position and the target character
            clockwise_distance = abs(ord(char) - ord(current_position))
            counterclockwise_distance = 26 - clockwise_distance

            # Add the minimum of the two distances plus the typing time to the total time
            total_time += min(clockwise_distance, counterclockwise_distance) + 1

            # Update the current position to the character just typed
            current_position = char

        return total_time

This solution takes the minimum time to reach each character in the word by considering both clockwise and counterclockwise movements, and it adds the typing time for each character. The total time to type the word is then returned.