LeetCode 1974. 使用特殊打字机键入单词的最少时间

简介: 有一个特殊打字机,它由一个 圆盘 和一个 指针 组成, 圆盘上标有小写英文字母 'a' 到 'z'。只有 当指针指向某个字母时,它才能被键入。指针 初始时 指向字符 'a' 。

网络异常,图片无法展示
|

题目地址(1974. 使用特殊打字机键入单词的最少时间)

leetcode-cn.com/problems/mi…

题目描述

有一个特殊打字机,它由一个 圆盘 和一个 指针 组成, 圆盘上标有小写英文字母 'a' 到 'z'。只有 当指针指向某个字母时,它才能被键入。指针 初始时 指向字符 'a' 。
每一秒钟,你可以执行以下操作之一:
将指针 顺时针 或者 逆时针 移动一个字符。
键入指针 当前 指向的字符。
给你一个字符串 word ,请你返回键入 word 所表示单词的 最少 秒数 。
示例 1:
输入:word = "abc"
输出:5
解释:
单词按如下操作键入:
- 花 1 秒键入字符 'a' in 1 ,因为指针初始指向 'a' ,故不需移动指针。
- 花 1 秒将指针顺时针移到 'b' 。
- 花 1 秒键入字符 'b' 。
- 花 1 秒将指针顺时针移到 'c' 。
- 花 1 秒键入字符 'c' 。
示例 2:
输入:word = "bza"
输出:7
解释:
单词按如下操作键入:
- 花 1 秒将指针顺时针移到 'b' 。
- 花 1 秒键入字符 'b' 。
- 花 2 秒将指针逆时针移到 'z' 。
- 花 1 秒键入字符 'z' 。
- 花 1 秒将指针顺时针移到 'a' 。
- 花 1 秒键入字符 'a' 。
示例 3:
输入:word = "zjpc"
输出:34
解释:
单词按如下操作键入:
- 花 1 秒将指针逆时针移到 'z' 。
- 花 1 秒键入字符 'z' 。
- 花 10 秒将指针顺时针移到 'j' 。
- 花 1 秒键入字符 'j' 。
- 花 6 秒将指针顺时针移到 'p' 。
- 花 1 秒键入字符 'p' 。
- 花 13 秒将指针逆时针移到 'c' 。
- 花 1 秒键入字符 'c' 。
提示:
1 <= word.length <= 100
word 只包含小写英文字母。

思路

通过把字符串转成ASCII码之后,计算顺时针逆时针的最小值

代码

  • 语言支持:Python3

Python3 Code:

class Solution:
    def minTimeToType(self, word: str) -> int:
        temp = "a"
        tempStap = ord(temp)
        res = 0
        for i in word:
            target = ord(i)
            res += min(26-abs(target-tempStap),abs(target-tempStap))+1
            # print(res,tempStap,target)
            tempStap = target
        return res
if __name__ == '__main__':
    word = "bza"
    res = Solution().minTimeToType(word)
    print(res)

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)
目录
相关文章
|
6月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
58 0
|
6月前
|
存储 自然语言处理 算法
算法编程(十九):词典中最长的单词
算法编程(十九):词典中最长的单词
71 0
|
存储 Cloud Native Go
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
108 1
|
11月前
c遇回车空格需谨慎--再记忆
为什么说再记忆呢...因为以前发过对scanf的探究.. [button href="https://dyedd.cn/730.html"]历史[/button] 对于字符来说,这样的输入不需要空格!
33 0
|
机器人
A . 单词拼写检查(无错哈希)
A . 单词拼写检查(无错哈希)
75 0
|
算法
算法创作|寻找比目标字母大的最小字母问题解决方法
算法创作|寻找比目标字母大的最小字母问题解决方法
105 0
|
Unix C语言 C++
正确理解回车与换行
回车 \r 本义是光标重新回到本行开头 换行 \n 本义是光标往下一行(不一定到下一行行首)
179 0
|
存储 Unix Shell
[oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
[oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
89 0
[oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
|
存储 自然语言处理 程序员
【Python 百炼成钢】错位键盘、单词的长度、字母重排
【Python 百炼成钢】错位键盘、单词的长度、字母重排
【Python 百炼成钢】错位键盘、单词的长度、字母重排
|
算法 安全
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
305 0
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换