class Solution {
public:
bool isLongPressedName(string name, string typed) {
}
};
925. 长按键入
你的朋友正在使用键盘输入他的名字 name
。偶尔,在键入字符 c
时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed
。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True
。
示例 1:
输入:name = "alex", typed = "aaleex" 输出:true 解释:'alex' 中的 'a' 和 'e' 被长按。
示例 2:
输入:name = "saeed", typed = "ssaaedd" 输出:false 解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。
提示:
1 <= name.length, typed.length <= 1000
name
和 typed
的字符都是小写字母原站题解
python3 解法, 执行用时: 56 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-27 14:56:18
class Solution: def isLongPressedName(self, name: str, typed: str) -> bool: i,j = 0,0 while j<len(typed): if i < len(name) and name[i] == typed[j]: i += 1 j += 1 elif j > 0 and typed[j] == typed[j-1]: j += 1 else: return False return i == len(name)
java 解法, 执行用时: 1 ms, 内存消耗: 39.4 MB, 提交时间: 2023-09-27 14:55:47
class Solution { public boolean isLongPressedName(String name, String typed) { int i = 0, j = 0; while (j < typed.length()) { if (i < name.length() && name.charAt(i) == typed.charAt(j)) { i++; j++; } else if (j > 0 && typed.charAt(j) == typed.charAt(j - 1)) { j++; } else { return false; } } return i == name.length(); } }
cpp 解法, 执行用时: 0 ms, 内存消耗: 6.5 MB, 提交时间: 2023-09-27 14:55:33
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(); } };
javascript 解法, 执行用时: 76 ms, 内存消耗: 41.1 MB, 提交时间: 2023-09-27 14:55:08
/** * @param {string} name * @param {string} typed * @return {boolean} */ const isLongPressedName = (name, typed) => { let i = 0; for (let j = 0; j < typed.length; j++) { if (i < name.length && name[i] == typed[j]) { // i 和 j 都步进1 i++; } else if (i - 1 >= 0 && typed[j] == name[i - 1]) { // i - 1 >= 0代表name[i - 1]存在 // 当前typed[j]是长按出来的,它右边可能还有长按出来的,只是j++ } else { // name[i - 1]不存在,或 typed[j] != name[i - 1],键入错误,直接返回false return false; } } if (i > name.length - 1) { // 遍历结束,如果i越界了,说明i的字符也考察完了,返回true return true; } return false; // i 没越界,说明还有别的字符未匹配,返回false };
golang 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2021-06-21 17:14:44
func isLongPressedName(name string, typed string) bool { i, j := 0, 0 for j < len(typed) { if i < len(name) && name[i] == typed[j] { i++ j++ } else if j > 0 && typed[j] == typed[j-1] { j++ } else { return false } } return i == len(name) }