当前位置: 首页 > 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.jsqmd.com/news/165544/

相关文章:

  • 选择优质LED照明需考量光源、光效及设计方案
  • skynet源码学习-clusteragent.lua
  • python基于Vue的企业员工奖惩工资考勤管理系统的设计与实现_e45z9_django Flask pycharm项目
  • Java面试必看:同步方法和同步块到底该选哪个?
  • 谁懂啊!2026 转行网安太香了!480 万缺口 + 15K 起薪,薪资 + 工作内容 + 前景全解析!
  • 港大联合字节跳动提出JoVA:一种基于联合自注意力的视频-音频联合生成模型
  • 基于昇腾910B的文生图模型推理服务化部署
  • python基于Vue的农机配件仓库管理系统的设计与实现_56d42_django Flask pycharm项目
  • python基于Vue的减肥体脂健康运动健身器材管理系统的设计与实现_5m179_django Flask pycharm项目
  • debian 与 ubuntu 之 - sudo
  • 在线互动学习网站设计毕业论文+PPT(附源代码+演示视频)
  • 还在熬夜赶论文?7款AI神器帮你选题降重一站式搞定!
  • 油泵轴承厂家推荐榜单 油泵电机/液压泵/电缸/7308/7309/73010/7311/7305/7306/7313/7315长寿命轴承制造商推荐 - 小张666
  • python基于Vue的培训机构在线教育教学平台设计与实现_pff2s_django Flask pycharm项目
  • python基于Vue的客户关系订单服务管理系统设计与实现_37g31_django Flask pycharm项目
  • python基于Vue的拍卖管理系统设计与实现_django Flask pycharm项目
  • Git命令大全:一表掌握所有核心操作
  • python基于Vue的汽车4s店销售一体化服务管理系统的设计与实现_6fc7t_django Flask pycharm项目
  • 锚定2026:易方达 A500ETF(159361)卡位领先,资金与规模双双站稳头部 - 速递信息
  • python基于Vue的家装一体化装修商城平台_guptn_django Flask pycharm项目
  • :has 伪类选择器(“父选择器” 或 “反向选择器” )
  • python基于Vue的快递业务配送取件管理系统_gbu3f_django Flask pycharm项目
  • python基于Vue的汽配汽车配件销售采购管理系统_23cu0_django Flask pycharm项目
  • (网警vs顶级黑客)网络攻防的核心底层逻辑
  • python基于Vue的教务选课缴费管理系统_ux52l_django Flask pycharm项目
  • 富文本编辑器粘贴Word公式转图片的组件
  • python基于Vue的洛川县苹果销售水果农产品商城管理平台_3tzoe_django Flask pycharm项目
  • 【博客之星】2025年度创作成长总结 - 高层次综合设计,和我一道,要识庐山真面目
  • 网页编辑器Word图片自动转Base64上传组件
  • Rime-AI v2版本发布