文章目录
925.长按键入1.题目描述2.题目示例3.思路及代码
925.长按键入
1.题目描述
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
这个题我觉得非常有意思,巧妙的利用了双指针,并且在边界条件上做了很多的处理,对逻辑能力的训练挺好的。
2.题目示例
3.思路及代码
思路:双指针,一个i指向name,一个j指向typed
如果两者能够匹配,那么同时前进1, i++, j++否则如果typed中有前后一致的,那么只j++如果到最后name和typed都匹配完了,说明为true这里注意只是i匹配走完会漏掉一种情况,如:wysla和wyslaz,这种本来应该返回false 代码:
class Solution {
public boolean isLongPressedName(String name
, String typed
) {
int i
= 0;
int j
= 0;
while(i
< name
.length() || j
< typed
.length()){
if(i
< name
.length() && j
< typed
.length() && name
.charAt(i
) == typed
.charAt(j
)){
i
++;
j
++;
}else if(j
> 0 && j
< typed
.length() && typed
.charAt(j
- 1) == typed
.charAt(j
)){
j
++;
}else{
return false;
}
}
return i
== name
.length() && j
== typed
.length();
}
}
运行结果