要求:你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
具体代码如下:
public class Test1_21 {
public static boolean isLongPressedName(String name, String typed) {
if(name.length() == typed.length()){
if(name.equals(typed))
return true;
else
return false;
}else if(name.length() > typed.length())
return false;
else{
char[] nameCh = name.toCharArray();
char[] typedCh = typed.toCharArray();
int i = 0,j = 0,k = 0,t = 0;
for (i = 0,k = 0;i < nameCh.length && k < typedCh.length;) {
if(nameCh[i] != typedCh[k])
return false;
else{
j = i;
t = k;
while(j < nameCh.length && nameCh[i] == nameCh[j])
j++;
while(t < typedCh.length && typedCh[k] == typedCh[t])
t++;
if((j - i) > (t - k))
return false;
else{
i = j;
k = t;
}
}
}
return (i == nameCh.length && k == typedCh.length);
}
}
public static void main(String[] args) {
if(isLongPressedName("alex","aaleex") == true)
System.out.println("输入名字时有长按");
else
System.out.println("输入时无长按或输入有误");
}
}
运行结果示例: