Your friend is typing his name
into a keyboard. Sometimes, when typing a character c
, the key might get long pressed, and the character will be typed 1 or more times.
You examine the typed
characters of the keyboard. Return True
if it is possible that it was your friends name, with some characters (possibly none) being long pressed.
Example 1:
Input: name = "alex", typed = "aaleex" Output: true Explanation: 'a' and 'e' in 'alex' were long pressed.
Example 2:
Input: name = "saeed", typed = "ssaaedd" Output: false Explanation: 'e' must have been pressed twice, but it wasn't in the typed output.
Example 3:
Input: name = "leelee", typed = "lleeelee" Output: true
思路:双指针,这里比较巧妙的是,用了count,也就是说,name里面的char频率必须小于typed里面的频率。最后记得i,j都必须同时到达最后的length;
class Solution {
public boolean isLongPressedName(String name, String typed) {
int i = 0, j = 0;
while (i < name.length()) {
if (j == typed.length() || name.charAt(i) != typed.charAt(j)) {
return false;
}
int count = 0;
while (i < name.length() - 1 && name.charAt(i) == name.charAt(i + 1)) {
i++;
count++;
}
while (j < typed.length() - 1 && typed.charAt(j) == typed.charAt(j + 1)) {
j++;
count--;
}
if (count > 0) {
return false;
}
i++;
j++;
}
return i == name.length() && j == typed.length();
}
}