925.长按键入
目录
- 一、题目
- 二、思路
- 三、解法
- 四、收获
一、题目
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
二、思路
规则的处理就是用while和if的结构组合,附加上一些计数值。这题难在规则上如何解决少按的情况。
写了一个但是卡在了leelee、leeeelee这种用例上,就是等长的重复情况处理不了。只能解决前10个用例
三、解法
class Solution {
public:
bool isLongPressedName(string name, string typed) {
int i = 0, j = 0;
while (j < typed.length()) {
if (i < name.length() && name[i] == typed[j]) {
i++;
j++;
} else if (j > 0 && typed[j] == typed[j - 1]) {
j++;
} else {
return false;
}
}
return i == name.length();
}
};
四、收获
如何才能想到很清晰的判断逻辑,发现一上来得先理清这些逻辑
三个if就写的清清楚楚了,应对大多数用例
不仅要把自己逻辑通过代码写出来,发现有解决问题的清晰的逻辑也很重要