Leetcode3016. 输入单词需要的最少按键次数 II

键盘大小写切换,打完一段字符需要的最少次数C++代码实现 在大小写切换的时候,可以有两种选择,一种是按下caps lock键,之后可以打大写字母,再按caps lock键切回小写;一种是同时按下shift键和字母建,就可以打出大写字母,算按下键盘两次,但这样不能锁定大写,每次都需要这样按;现在输入一段字符串,只含有大小写字母,求最少的按键次数,输入输出如下: 输入: 6 AaAAAA 第一行表示输入的字符个数,第二行表示输入的字符串 输出: ... 阅读详情

Every day a Leetcode

题目来源:3016. 输入单词需要的最少按键次数 II

解法1:哈希 + 排序

本题与 3014. 输入单词需要的最少按键次数 I 唯一不同的点在于:

3014. 输入单词需要的最少按键次数 I 中字符串 word 所有字母互不相同,而 3016. 输入单词需要的最少按键次数 II
中字符串 word 的字符可以重复。

在这里插入图片描述

因为我们希望出现次数多的字符的点击次数尽可能少。

我们用一个哈希表 alpha 统计字符串 word 中各个字符 c 出现的次数,按降序排序。

遍历哈希表 alpha,当前下标为 i,当前字符次数为 alpha[i],它的单次点击所需次数为 i/8+1 次,因为我们只有 8 个按钮可以按。把 alpha[i] * (i / 8 + 1) 累加起来,这样得到的总按键次数最小。

代码:

/*
 * @lc app=leetcode.cn id=3016 lang=cpp
 *
 * [3016] 输入单词需要的最少按键次数 II
 */

// @lc code=start
class Solution
{
public:
    int minimumPushes(string word)
    {
        // 特判
        if (word.empty())
            return 0;

        int n = word.size();
        vector<int> alpha(26, 0);
        for (char &c : word)
            alpha[c - 'a']++;
        sort(alpha.begin(), alpha.end(), greater<int>());

        int ans = 0;
        for (int i = 0; i < 26; i++)
            ans += alpha[i] * (i / 8 + 1);
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是字符串 word 的长度。

空间复杂度:O(n),其中 n 是字符串 word 的长度。

家长必看!用RouterOS轻松屏蔽不良网站,保护孩子上网安全 本文为家长提供了一份详细的RouterOS路由器配置指南,旨在通过技术手段保护儿童上网安全。文章核心介绍了如何利用RouterOS的DNS静态条目功能,轻松实现禁止访问特定不良网站,并结合防火墙时间规则,为孩子构建一个纯净、可控的家庭网络环境,操作简单,无需专业背景。 阅读详情

相关推荐

国内免魔法接入Grok API,打造智能QQ机器人实战指南

大型语言模型(LLM)通过API接口为开发者提供了强大的自然语言处理能力,其核心原理是基于海量数据训练的深度神经网络,能够理解和生成类人文本。这一技术价值在于显著降低了AI应用开发门槛,使开发者无需从零训练模型即可快速集成智能对话、内容生成等功能。在即时通讯、智能客服、自动化工具等应用场景中,LLM API能有效提升交互体验与效率。本文聚焦于如何通过稳定的第三方API服务,绕开网络访问限制,将xAI推出的Grok模型接入国内网络环境,并结合NoneBot2框架与go-cqhttp,实现一个功能完整的智能QQ

weixin_30607125的博客 337

C语言 手机键盘

题目描述 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符...

韩豆豆小姐的博客 887

DVWA全级别详细通关教程

dvwa全级别详细通关教程,暴力破解,命令注入,CSRF跨站请求伪造,文件包含,文件上传​,SQL注入,XSS

m0_62063669的博客 1万+

输入单词需要的最少按键次数 I

输入单词需要的最少按键次数 I

青釉Oo的博客 558

【漏洞复现】7-Zip目录穿越漏洞(CVE-2025-11001)

摘要:CVE-2025-11001是7-Zip(v21.02-v24.09)Windows版处理ZIP包符号链接时的高危漏洞,攻击者可构造恶意ZIP文件实现目录穿越和任意文件写入。漏洞源于路径检查缺陷,当用户解压含特殊符号链接的压缩包时,可能将文件写入系统目录。复现利用GitHub公开的Python脚本(https://github.com/pacbypass/CVE-2025-11001)可生成攻击包,需注意该漏洞仅影响Windows且需要用户交互。

LongL_GuYu的博客 1609

告别手册!S32K3XX的eMIOS实战:从GPT定时到PWM输出,一个通道搞定电机控制

本文深入探讨了NXP S32K3XX系列MCU的eMIOS模块在电机控制中的高效应用。通过单通道实现PWM生成、输入捕获和定时中断三大功能,展示了如何简化BLDC电机控制硬件设计。文章结合RTD库与寄存器级编程,提供动态模式切换和性能优化方案,显著降低CPU负载。

weixin_42522374的博客 147

Leetcode3014. 输入单词需要的最少按键次数 I

Leetcode3014. 输入单词需要的最少按键次数 I

ProgramNovice的博客 545

Jetson Nano 【1】入手开箱、烧系统

类似于半开箱哈哈 怀着小期待的心情,屁颠屁颠跑到村口领快递,拿到了这个香喷喷的Jetson Nano 开发板 开箱: 由于太激动了忘记拍点啥,于是在最后留了张全家福 板子的结构: 我觉得这个有必要记录一下,于是去官方文档拿了张图来:官方文档传送 1=SD card 的卡槽,位于第二层板子的背部,也就是大风扇屁股位置 2=40针扩展接头(还没开用) 3=USB的供电口,根据大佬测试(某哩...

椰子奶糖的博客 4198

Leetcode 2268. Minimum Number of Keypresses [Python]

把字母出现的次数统计出来,从多到少排序,出现次数多的字母尽可能排在第一轮就可以按到,也就是press1次,以此类推到press 2次,press 3次。 class Solution: def minimumKeypresses(self, s: str) -> int: Counter = collections.Counter(s) newCounter = [] for c,num in Counter.items():

sinat_30403031的博客 566

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1224

Plecs standalone 4.9.5最新版本,赶紧来下载使用吧,需要做并网逆变器及光伏储能变换器的朋友赶紧下载起来

PLECS 4.9.5较4.7.1版实现全面升级:采用自适应求解器切换技术,支持多核CPU/GPU加速,仿真速度提升30-50%;新增模型引用功能,实现模块化设计;强化光伏/风电等新能源组件,支持多物理场耦合分析;优化代码生成功能,兼容多种硬件平台和FMU导入。新版特别适用于复杂电力电子系统、多域联合仿真及硬件在环测试项目,但对硬件配置要求更高。基础教学项目仍可使用4.7.1版本。建议用户根据项目复杂度选择升级方案。

2457

第一个——最少按键次数(C语言)

这一段就是简单的将每次的次数加入到新数组中,然后再创建一个新数组将排好顺序的出入里面,这里可以简单的使用正常的开辟,也可以动态的,但这里我想,无论如何都是26个字母,开辟定长的数组省事一点。首先就是我们知道,这个要最少的按键次数,而且我们的键盘字母的顺序是可以自定义随意的,也就是说,是哪个先按下不重要,重要的是让按下次数多的排在第一个字母的位置,也就是排在前面。这里我们数据结构并不是很好所以在解决这样的问题的时候,还是趋向于简单的C语言去解决,可能也不是很简便,如果你有更好的欢迎斧正!

JAG678的博客 373

LPDDR5 学习笔记02:上电初始化与下电时序

LPDDR5上电初始化流程需严格遵守时序要求:首先确保电源按顺序上电(VDD1→VDD2H→VDD2L→VDDQ),RESET_n保持低电平至电压稳定。初始化包含自动ZQ校准、命令总线训练(CBT)、WCK2CK电平校准和DQ总线训练四个关键阶段,需完成全部训练后才能正常操作。在双电源轨系统中,须在CBT前设置MR13寄存器。复位操作需保持RESET_n低电平至少tPW_RESET时间,断电时要求CS保持低电平且电源电压有序下降。非受控下电时电压斜率需低于0.5V/μs,器件生命周期内不得超过400次非受控

一只豌豆象的博客 2044

leetcode 3016. 输入单词需要的最少按键次数 II 中等

总成本为 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 2 * 2 + 6 * 1 = 24。注意按键 9 没有映射到任何字母:不必让每个按键都存在与之映射的字母,但是每个字母都必须映射到按键上。"a" -> 在按键 2 上按一次。"b" -> 在按键 3 上按一次。"c" -> 在按键 4 上按一次。"x" -> 在按键 2 上按一次。"y" -> 在按键 3 上按一次。"z" -> 在按键 4 上按一次。

2401_88085478的博客 219

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 3016.输入单词需要的最少按键次数 II:排序(贪心)

LeetCode 3016.输入单词需要的最少按键次数 II:排序(贪心) 给你一个字符串 word,由小写英文字母组成。 电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 ["a","b","c"],我们需要按一次键来输入 "a",按两次键来输入 "b",按三次键来输入 "c"。 现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 w

<font color="Pink">Tisfy的博客</font> 325

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode 3016. Minimum Number of Pushes to Type Word II

Leetcode 3016. Minimum Number of Pushes to Type Word II

codename_cys的博客 712

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

題解/算法 {3016. 输入单词需要的最少按键次数 II}

1

qq_66485519的博客 468

Leetcode 第 381 场周赛题解

Leetcode 第 381 场周赛题解

ProgramNovice的博客 1998

3016. 输入单词需要的最少按键次数 II(2026.07.31)

总成本为 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 2 * 2 + 6 * 1 = 24。注意按键 9 没有映射到任何字母:不必让每个按键都存在与之映射的字母,但是每个字母都必须映射到按键上。总成本为 1 + 1 + 1 + 1 + 1 = 5。“a” -> 在按键 2 上按一次。“b” -> 在按键 3 上按一次。“c” -> 在按键 4 上按一次。“x” -> 在按键 2 上按一次。“z” -> 在按键 4 上按一次。

yyds_yyd_10086的博客 231

周赛381(模拟、BFS、贪心)

表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的。表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的。小写英文字母集合相映射,可以通过按压按键来组成单词。小写英文字母集合相映射,可以通过按压按键来组成单词。下面给出了一种电话键盘上字母到按键的映射作为示例。下面给出了一种电话键盘上字母到按键的映射作为示例。,都存在一条街道连接编号为。),你需要找出所有满足要求的。,都存在一条街道连接编号为。),你需要找出所有满足要求的。,我们需要按一次键来输入。,我们需要按一次键来输入。

qq_42958831的博客 539

LeetCode 每日一题 2026/7/27-2026/8/2

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 236

打字按键次数

题目描述: 小明很喜欢打字,今天小红给了小明一个字符串。这个字符串只包含大写和小写字母。 我们知道,按下CapsLock键,可以切换大小写模式。我们在小写模式时候,同时按下shift+字母键,就能写出大写字母。在大写模式的时候,按下shift+字母键,就能写出小写字母。现在问题来了,给你一个字符串,问你最少使用多少个按键,就可以写出这个字符串呢?注意,按shift和字母键,算两次按键。开始时均为小写状态。 输入描述:数据一个字符串s,s的长度小于等于100。仅包含大小写字母。 输出描述:对于每组数据,输出.

qq_40934617的博客 2805

京东-按键最少次数

题目:输入一个字符串,键盘按键Caps Lock可以切换大小写模式,在大写模式下,若想输入小写字母,可以shift+字母,同样在小写模式下,若想输入大写字母可以shift+字母,给定一个字符串求最小的点按键击次数。注意:shift+字母算两次按键点击,默认初始状态是小写模式。 s = 'AaAAA' flag = 0 res = 0 i=0 while i < len...

weixin_30375427的博客 348

hdoj-2577-How to Type (最少按键次数)

How to Type Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4657 Accepted Submission(s): 2109 Problem Description Pirates have finished de

qq_18062811的专栏 1389

力扣1713.得到子序列最少的操作次数

题目如下 https://leetcode-cn.com/problems/minimum-operations-to-make-a-subsequence/ 题目解析 简单来看会发现这道题目是求最长公共子序列,但是求最长公共子序列的时间复杂度会很高,其实我们可以将这个问题转化为最长上升子序列的解法。根据target中互不相同,我们知道每个数字对应的坐标唯一; 于是最长公共子序列等价于arr用target的坐标转换后构成最长的上升子序列.因为子序列的顺序不会发生改变,还是按照原来的顺序进行排列,我们只需要

qq_51718832的博客 2904

leetcode453:最小操作次数

class Solution { public int minMoves(int[] nums) { int length = nums.length; // 数组长度 Arrays.sort(nums); int min = nums[0]; int count = 0; int total = 0; for(int num : nums){ total += num; .

Forest_2Cat的博客 436
上一篇: Leetcode3014. 输入单词需要的最少按键次数 I
下一篇: Leetcode3017. 按距离统计房屋对数目 II
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值