当前位置: 首页 > news >正文

力扣刷题:长按键入

题目:
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。

你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。

示例 1:

输入:name = “alex”, typed = “aaleex”
输出:true
解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。

示例 2:

输入:name = “saeed”, typed = “ssaaedd”
输出:false
解释:‘e’ 一定需要被键入两次,但在 typed 的输出中不是这样。

解析:
这道题使用双指针的思路是比较方便的:
用 i 遍历 name,用 j 遍历 typed。
如果 name[i] === typed[j],说明当前字符匹配,i 和 j 都向前移动。
如果 typed[j] === typed[j - 1](即 typed 的当前字符和前一个字符相同),说明这个字符是长按产生的,j 继续向前移动。
否则,说明 typed 无法由 name 通过长按得到,返回 false。
结束时,i 必须遍历完整个 name,否则说明 typed 里缺少 name 的部分字符,返回 false。

具体代码:

/** * 判断 typed 字符串是否是 name 字符串经过长按键入后的结果 * 长按键入:输入 name 时,某些键可能被长按,导致字符重复出现 * @param {string} name - 原始名字 * @param {string} typed - 实际键入的字符串(可能包含长按重复字符) * @return {boolean} - typed 是否是 name 的长按键入版本 */varisLongPressedName=function(name,typed){// 获取两个字符串的长度constn=name.length// 原始名字长度constm=typed.length// 实际输入长度// 双指针:i 指向 name 的当前字符,j 指向 typed 的当前字符leti=0// name 的索引指针letj=0// typed 的索引指针// 遍历 typed 字符串while(j<m){// 情况1:当前字符匹配成功(name 和 typed 的当前字符相同)// 条件 i < n 确保不会访问 name 越界的字符if(i<n&&name[i]===typed[j]){// 匹配成功,两个指针都向后移动一位i++// 处理 name 的下一个字符j++// 处理 typed 的下一个字符}// 情况2:当前字符不匹配,但 typed 当前字符是前一个字符的重复(长按产生的重复)// 条件 j > 0 确保 typed[j-1] 不会越界elseif(j>0&&typed[j]===typed[j-1]){// 这是长按产生的重复字符,只移动 typed 指针j++// 跳过这个重复字符,继续检查 typed 的下一个字符}// 情况3:既不匹配,也不是长按重复字符 → 直接失败else{// 说明 typed 中出现了 name 中没有的、也不是长按产生的新字符returnfalse}}// 遍历完 typed 后,检查 name 的所有字符是否都被匹配完// 如果 i === n,说明 name 的每个字符都在 typed 中找到了对应// 如果 i < n,说明 name 还有字符没被匹配到returni===n};
http://www.rkmt.cn/news/181048.html

相关文章:

  • Java面试必看:同步方法和同步块到底该选哪个?
  • 谁懂啊!2026 转行网安太香了!480 万缺口 + 15K 起薪,薪资 + 工作内容 + 前景全解析!
  • 基于昇腾910B的文生图模型推理服务化部署
  • 港大联合字节跳动提出JoVA:一种基于联合自注意力的视频-音频联合生成模型
  • python基于Vue的农机配件仓库管理系统的设计与实现_56d42_django Flask pycharm项目
  • python基于Vue的减肥体脂健康运动健身器材管理系统的设计与实现_5m179_django Flask pycharm项目
  • 在线互动学习网站设计毕业论文+PPT(附源代码+演示视频)
  • python基于Vue的客户关系订单服务管理系统设计与实现_37g31_django Flask pycharm项目
  • :has 伪类选择器(“父选择器” 或 “反向选择器” )
  • python基于Vue的快递业务配送取件管理系统_gbu3f_django Flask pycharm项目
  • python基于Vue的汽配汽车配件销售采购管理系统_23cu0_django Flask pycharm项目
  • (网警vs顶级黑客)网络攻防的核心底层逻辑
  • python基于Vue的贫困地区儿童捐赠资助系统的设计与实现_wzqna_django Flask pycharm项目
  • HTML富文本编辑器粘贴PPT图片自动上传组件
  • Go context详解:超时控制与请求链路追踪
  • 新能源汽车车载双向 OBC 的 MATLAB 仿真探索
  • 短视频多平台智能运营神器源码:AI剪辑+矩阵管理+百种工具赋能
  • python基于Vue的大学生入伍人员管理系统的设计与实现_zgyv9_django Flask pycharm项目
  • 短视频运营者智能获客全开源SAAS系统源码详解,轻松创建和管理子账户
  • python基于Vue的电子印章申请下发管理系统的电子办公签章系统_2122r_django Flask pycharm项目
  • 技术深解:天硕TOPSSD高可靠固态硬盘针对飞腾、龙芯平台三个底层设计根源 - 资讯焦点
  • python基于Vue的高效大学生助学贷款系统的设计与实现_qkre9_django Flask pycharm项目
  • python基于vue的二手儿童绘本网上商城交易系统设计与实现 7k9k2
  • 还在为挑选空气能热泵而纠结?2025年最新十大品牌权威盘点来了! - 资讯焦点
  • python基于Vue的二手书籍交易系统的设计与实现 商家卖家_i5j6h_django Flask pycharm项目
  • python基于Vue的二手手机交易平台的设计与实现_django Flask pycharm项目
  • mbr膜优质厂家哪家好/合作厂商哪家好/大型厂商哪家好? - 工业品网
  • python基于Vue的地方特色美食分享管理系统_gn195_django Flask pycharm项目
  • 2025年被动式窗品牌排行,这五家领跑市场,旧窗换新/全屋门窗/智能门窗/安全门窗/法式门窗/节能门窗/电动门窗被动式窗实力厂家选哪家 - 品牌推荐师
  • PyGUI