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)
目录
相关文章
|
5月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
52 0
|
10月前
c遇回车空格需谨慎--再记忆
为什么说再记忆呢...因为以前发过对scanf的探究.. [button href="https://dyedd.cn/730.html"]历史[/button] 对于字符来说,这样的输入不需要空格!
29 0
|
机器人
A . 单词拼写检查(无错哈希)
A . 单词拼写检查(无错哈希)
62 0
EndNote调整中文、英文参考文献的排列先后顺序
本文介绍在EndNote软件中,使得参考文献按照语种排列,中文在前、英文在后的方法~
966 1
|
Unix C语言 C++
正确理解回车与换行
回车 \r 本义是光标重新回到本行开头 换行 \n 本义是光标往下一行(不一定到下一行行首)
161 0
|
前端开发 程序员
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
92 0
|
存储 自然语言处理 程序员
【Python 百炼成钢】错位键盘、单词的长度、字母重排
【Python 百炼成钢】错位键盘、单词的长度、字母重排
139 0
【Python 百炼成钢】错位键盘、单词的长度、字母重排
|
测试技术
LeetCode每日一题——1592. 重新排列单词间的空格
给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。
100 0
|
算法 安全
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
289 0
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
7-42 行编辑器 (10 分)
7-42 行编辑器 (10 分)
160 0