【教3妹学编程-算法题】输入单词需要的最少按键次数 I

瑟瑟发抖

3妹:2哥,新年好鸭~
2哥 : 新年好,3妹这么早啊
3妹:是啊,新年第一天要起早,这样就可以起早一整年
2哥 :得,我还不了解你,每天晒到日上三竿
3妹:嘿嘿嘿嘿,一年是有300多天起的比较晚~
2哥:3妹,过完年什么时候回来啊
3妹:最少也要初七吧,好不容易回家一趟多陪陪父母。
2哥:好吧,回家也也要记得每天刷题啊,今天有一道“最少”的题目, 让我们先做一下吧~

吃瓜

题目:

给你一个字符串 word,由 不同 小写英文字母组成。

电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 [“a”,“b”,“c”],我们需要按一次键来输入 “a”,按两次键来输入 “b”,按三次键来输入 “c”。

现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。

返回重新映射按键后输入 word 所需的 最少 按键次数。

下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1,*,# 和 0 不 对应任何字母。
image.png
示例 1:
image.png
输入:word = “abcde”
输出:5
解释:图片中给出的重新映射方案的输入成本最小。
“a” -> 在按键 2 上按一次
“b” -> 在按键 3 上按一次
“c” -> 在按键 4 上按一次
“d” -> 在按键 5 上按一次
“e” -> 在按键 6 上按一次
总成本为 1 + 1 + 1 + 1 + 1 = 5 。
可以证明不存在其他成本更低的映射方案。

示例 2:
image.png
输入:word = “xycdefghij”
输出:12
解释:图片中给出的重新映射方案的输入成本最小。
“x” -> 在按键 2 上按一次
“y” -> 在按键 2 上按两次
“c” -> 在按键 3 上按一次
“d” -> 在按键 3 上按两次
“e” -> 在按键 4 上按一次
“f” -> 在按键 5 上按一次
“g” -> 在按键 6 上按一次
“h” -> 在按键 7 上按一次
“i” -> 在按键 8 上按一次
“j” -> 在按键 9 上按一次
总成本为 1 + 2 + 1 + 2 + 1 + 1 + 1 + 1 + 1 + 1 = 12 。
可以证明不存在其他成本更低的映射方案。

提示:

1 <= word.length <= 26
word 仅由小写英文字母组成。
word 中的所有字母互不相同。

思路:

思考
设 nums\textit{nums}nums 的异或和为 sss。

由于各个字母互不相同,所以均匀分配到这 8 个按键。

设字符串长度为 n,k=⌊n/8⌋,那么先分配给每个按键 k 个字母,总按键次数为

8⋅(1+2+⋯+k)=4k(k+1)
剩余的 n mod 8个字母需要按 k+1次。

所以答案为

4k(k+1)+(n mod 8)(k+1)=(4k+n mod 8)(k+1)

java代码:

class Solution {public int minimumPushes(String word) {int n = word.length();int k = n / 8;return (k * 4 + n % 8) * (k + 1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/467402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】链表OJ面试题4《返回链表入环的第一个结点》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表&#xff0c;判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 10. 给定一个链表&#xff0c;返回链表开始…

TCP和UDP相关问题(重点)——8.TCP的拥塞控制怎么实现的?

在某段时间内&#xff0c;若对网络中某一资源的需求超过了该资源所能提供的可用部分&#xff0c;网络性能就会变坏&#xff0c;比如在高速公路上行驶的车辆&#xff0c;如果一时期内涌入了太多的车辆&#xff0c;道路将变得拥堵&#xff0c;交通状况变差。网络中也是一样&#…

CTFshow web(php命令执行 68-71)

web68 还是那句话&#xff0c;没看到flag在哪&#xff0c;那就优先找到flag位置 这里cvar_dump(scandir("/")); 直接输出根目录的位置&#xff0c;然后查看源代码&#xff0c;发现flag位置为flag.txt 知道flag在根目录下面的flag.txt直接访问就好了 cinclude(/flag…

【北邮鲁鹏老师计算机视觉课程笔记】07 Local feature-Blob detection

【北邮鲁鹏老师计算机视觉课程笔记】07 Local feature-Blob detection 1 实现尺度不变性 不管多近多远&#xff0c;多大多小都能检测出来 找到一个函数&#xff0c;实现尺度的选择特性 2 高斯偏导模版求边缘 做卷积 3 高斯二阶导拉普拉斯 看哪个信号能产生最大响应 高斯…

营销平台分享

上面几个阶段的用户分别是新用户、未激活用户、活跃用户、沉默用户、流失用户&#xff0c;具体流转关系如下图所示。 新用户如果长时间没有下单就变成了未激活用户&#xff0c;新用户如果有下单就变成了活跃用户&#xff0c;活跃用户如果隔一段时间没有下单就变成了沉默用户&a…

鸿蒙小案例-你画我猜

鸿蒙小案例-你画我猜 1.准备组件(组件布局) 2.实现跟随鼠标画笔画出图案功能 3.实现复制上面的画笔的图案功能 4.其他小功能1.组件的准备 画布的组件官方给的API是Canvas&#xff0c;需要传递一个参数CanvasRenderingContext2D 直接搜索API 使用官方案例 private settings: …

2.12.。

1、选择芯片型号——STM32F051K8 2、开启调试功能 3、配置时钟 4、配置时钟树 5、工程管理

LeetCode:70.爬楼梯

前言&#xff1a;好家伙&#xff0c;一直以为动态规划是啥高大上的&#xff0c;解释那么多&#xff0c;在我看来不过是找规律罢了&#xff0c; 写那么多"专业术语"咋看咋像糊弄人的 (手动扶额) 另外&#xff0c;通项公式虽然抽象还能接受&#xff0c;但是矩阵快速幂…

接口测试06 -- pytest接口自动化封装Loggin实战

1. 接口关键字封装 1.1 基本概念 接口关键字封装是指:将接口测试过程中常用的操作、验证封装成可复用的关键字(或称为函数、方法),以提高测试代码的可维护性和可复用性。 1.2 常见的接口关键字封装方式 1. 发送请求:封装一个函数,接受参数如请求方法、URL、请求头、请求…

游泳耳机排行榜前十名,精选四款热门游泳耳机排行榜品牌推荐

游泳&#xff0c;一项被誉为“最全面的运动”的健身方式。无论是对于年轻人还是中老年人&#xff0c;无论体重大小&#xff0c;游泳都能带来无与伦比的益处。在水中的阻力是地面上的十二倍&#xff0c;这使得游泳成为了一种全身性的锻炼方式&#xff0c;能够让身体的每一块肌肉…

宽带高效非对称连续J/F-1模式Doherty 功率放大器设计(2023.11 MTT)-从理论到ADS版图

宽带高效非对称连续J/F-1模式Doherty 功率放大器设计(2023.11 MTT)-从理论到ADS版图 这个文章实现的效果非常好&#xff0c;非常值得大家去阅读复现&#xff08;见前言介绍&#xff09;&#xff0c;但是我复现出现了一点困难&#xff0c;效果调不到那么好&#xff08;带宽只是…

【教程】最新使用Shamrock搭建QQ机器人

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 官方原版Shamrock的作者已经删库跑路了&#xff0c;所以我们使用这个&#xff1a;OpenShamrock 文档在这里&#xff0c;但访问可能需要点魔法&#xff1a;快速开始指南 步骤也简单&#xff0c;这里以无R…