题目:
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
示例 1:
输入:name = "alex", typed = "aaleex"
输出:true
解释:'alex' 中的 'a' 和 'e' 被长按。
来源:力扣(LeetCode)
解:
这道题双数组同时遍历即可,主要是注意边界判断。
class Solution {
public boolean isLongPressedName(String name, String typed) {
char[] na=name.toCharArray();
char[] ty=typed.toCharArray();
int j=0;
for(int i=0;i<ty.length;i++){
//当前位相等且name不能越界
if(j<na.length && na[j]==ty[i]){
j++;
continue;
}
//当前位相等,判断是否重复键入,name不能越界
if(j>0 && na[j-1]==ty[i]){
continue;
}else{
//当前位不相等,也不是上一个的重复输入,即匹配失败
return false;
}
}
if(j<na.length){
//name未匹配结束,typed已经结束,匹配失败
return false;
}
return true;
}
}