题目简介:
你的朋友正在使用键盘输入他的名字 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
的字符都是小写字母。
思路:
定义两个指针,指向各自的字符串开头。
若指向的两个字符相同,则各往后移动一位。
若不相同,则判断name[i - 1]
是否与typed[j]
相同,若不相同,则返回false
;若相同,则说明是多次输入的字符,将j
持续往后移动,直至遇到不同的字符。
退出循环时,若typed
还有字符未被遍历,则需要判断这些字符是否为多次输入的字符。
若name
未遍历完全,则返回false
。
代码如下:
1 | class Solution { |