题目链接
英文链接:https://leetcode.com/problems/long-pressed-name/
中文链接:https://leetcode-cn.com/problems/long-pressed-name/
题目详述
你的朋友正在使用键盘输入他的名字 name
。偶尔,在键入字符 c
时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed
。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True
。
示例 1:
1 | 输入:name = "alex", typed = "aaleex" |
示例 2:
1 | 输入:name = "saeed", typed = "ssaaedd" |
示例 3:
1 | 输入:name = "leelee", typed = "lleeelee" |
示例 4:
1 | 输入:name = "laiden", typed = "laiden" |
提示:
name.length <= 1000
typed.length <= 1000
name
和typed
的字符都是小写字母。
题目详解
- 运用双指针。一个指针
i
指向name
数组,一个指针j
指向typed
数组。 - 当
name[i] == typed[j]
时,指针i
和j
均右移。 - 当
name[i] != typed[j]
时,- 若
j > 0 && typed[j] == typed[j - 1]
,可能是长按,存在匹配的可能,j
右移。 - 若
j == 0 || typed[j] != typed[j - 1]
,不可能匹配,返回false
。
- 若
- 最后还需判断是否存在多余不同的字符。
1 | public class LeetCode_00925 { |