题目链接
925. 长按键入
Easy
题目思路
这个也是个双串匹配的问题,但是是属于较简单的匹配问题。
给定两个字符串,问这两个字符串是否代表同一个内容。
输入typed
字符串中可能存在重复输入的键,这个时候我们可以忽略它。
那么我们用双指针去判断即可,其中i
代表第一个字符串的浮标,j
代表第二个字符串的浮标
- 如果
i
,j
指向的字符相等,都往下移动一位 - 如果不相等
typed
出现了重复输入的键,那么我们直接让j
往下挪一位即可- 否则就是
typed
中出现了name
中没有出现过的字符,可以直接返回false
最后我们还需要检查typed
字符串剩下的字符是否都为重复输入的键。如果否,就应该返回false
。
最后我们返回i >= name.length()
即可。
代码实现
class Solution {
public boolean isLongPressedName(String name, String typed) {
int i = 0;
int j = 0;
while(i < name.length() && j < typed.length()){
if(name.charAt(i) == typed.charAt(j)){
i++;
j++;
}else{
if(j >= 1 && typed.charAt(j) == typed.charAt(j - 1)){
j++;
}else{
return false;
}
}
}
while(j < typed.length()){
if(typed.charAt(j) != typed.charAt(j - 1)){
return false;
}
j++;
}
return i >= name.length();
}
}