题目: 输入 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; } }