题目描述
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
思路
- 大致题意为:判断输入的名字中是否存在某些字符因为手抖重复输入
- 朋友的名字是name,朋友输入的名字是typed
- 通过charAt()可以取到字符串中的指定下标的字符
- name.charAt(i)表示name中的字符,typed.charAt(j)表示typed中的字符
- 从头开始比较,情况①如果name.charAt(i)==typed.charAt(j),那么i,j均++,比较下一个字符,相当于两个指针
- 情况②如果不相等,那么就比较typed.charAt(j)是否等于typed.charAt(j-1),如果相等,那么就是手抖重复输入了,只需要j++即可
- 情况③,以上两种情况均不满足,说明当前这个字符,既不是名字中当前顺序应该出现的字符,也不是重复输入的字符,返回false即可
代码
class Solution {
public boolean isLongPressedName(String name, String typed) {
int i=0;
int j=0;
while(j<typed.length()){
if(i<name.length()&&name.charAt(i)==typed.charAt(j)){
i++;
j++;
}else if(j>0&&typed.charAt(j)==typed.charAt(j-1)){
j++;
}else{
return false;
}
}
return i==name.length();
}
}