LeetCode/925. 长按键入
925. 长按键入
你的朋友正在使用键盘输入他的名字 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 <= 1000typed.length <= 1000name和typed的字符都是小写字母。
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题本质就是利用双指针比较两个字符串是否满足要求,但是这里面有很多特殊情况。由于题目说明的情况只是按着某个键不松手,重复输入相同的字符,所以虽然有重复,但是字符序列的顺序是不变的,简单来说就是不能出现name中压根没有的字符。我们创建两个两个指针指向了两个字符串,如果两个字符相等,那么两个指针自增,如果不相等,那么有两种情况,第一种是typed中当前字符和上一个字符相同,这种情况就是题目说明的按着某一个键不松手,这时只需要将指向typed的指针自增即可;第二种情况就是tyeped[j] != typed[j - 1],这种情况就是出现了完全不存在name中的字符,直接返回false即可。
具体代码如下:
1 | class Solution { |

