题目:
输入 name时。按键可能会被长按,导致字符可能被输入 1 次或多次。
检查键盘输入的结果字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
分析
其实这个题目,就是比较两个字符串,一共有3种情况。
初始化两个指针 i,j分别指向name 和 typed的0
1,字符串相同,则 i 和 j 同时 +1
2,字符串不同,但 typed 对应 j 位置的字符串和 j-1 位置的字符串相同,则 j+1
3,其他情况,直接跳出循环。返回 false
遍历完字符串后,查看 i 是否到达 name 的结尾。
代码
class Solution {
public boolean isLongPressedName(String name, String typed) {
int len1 = name.length();
int len2 = typed.length();
int i=0,j=0;
boolean res;
while(i<len1 && j<len2){
if (name.charAt(i)==typed.charAt(j)){
i++;
j++;
} else if (j-1>=0 && typed.charAt(j-1)==typed.charAt(j)){
j++;
} else {
return false;
}
}
if (i==len1){
res = true;
while (j<len2){
if (name.charAt(i-1)==typed.charAt(j)){
j++;
}else{
return false;
}
}
}else{
res = false;
}
return res;
}
}