925. 长按键入
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
思路
令双指针分别指向name和typed的开头,比较name[i]和typed[j]是否相等,相等匹配成功都前进一步,不相等的话判断typed[j]是否和typed[j - 1]相等,相等证明是长按,j前进,不相等则可以直接返回false,最后判断name是否全部被匹配即可。
代码
class Solution {
public:
bool isLongPressedName(string name
, string typed
) {
int i
= 0, j
= 0;
while(j
< typed
.size()) {
if(i
< name
.size() && name
[i
] == typed
[j
]) {
i
++;
j
++;
}
else if(j
> 0 && typed
[j
] == typed
[j
- 1]) {
j
++;
}
else {
return false;
}
}
return i
== name
.size();
}
};