Leetcode每日一题2020.10.21第925题:长按输入

it2025-01-20  15

925.长按输入

题目描述

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

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/long-pressed-name 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例

思路

根据题意能够分析得到:字符串 typed 的每个字符,有且只有两种「用途」:

1、作为name 的一部分。此时会「匹配」name 中的一个字符

2、作为长按键入的一部分。此时它应当与前一个字符相同。

如果 typed 中存在一个字符,它两个条件均不满足,则应当直接返回false;否则,当typed 扫描完毕后,我们再检查 name 的每个字符是否都被「匹配」了。

实现上,我们使用两个下标 i,j 追踪 name 和 typed 的位置。

当name[i]=typed[j] 时,说明两个字符串存在一对匹配的字符,此时将 i,j 都加 1。

否则,如果 typed[j]=typed[j-1],说明存在一次长按键入,此时只将 j加 1。

最后,如果i=len(name),说明 name 的每个字符都被「匹配」了。

容易出错的点

以下为错误代码: 执行错误信息:字符串索引超出范围 原因 : 第五行中,后判断i是否超出范围的话,会导致索引值超出范围,从而报错 以下为正确代码:

小知识点:逻辑运算符

‘and’ :x为False, x and y返回False,否则它返回y的计算值 ‘or’ :x是True, x or y 返回True, 否则它返回y的计算值

最新回复(0)