【leetcode刷题】T97-长按键入
时间:2022-06-26
本文章向大家介绍【leetcode刷题】T97-长按键入,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【题目】
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
示例 :
输入:name = "alex", typed = "aaleex"
输出:true
解释:'alex' 中的 'a' 和 'e' 被长按。
示例 :
输入:name = "saeed", typed = "ssaaedd"
输出:false
解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。
示例 :
输入:name = "leelee", typed = "lleeelee"
输出:true
示例 :
输入:name = "laiden", typed = "laiden"
输出:true
解释:长按名字中的字符并不是必要的。
提示:
name.length <= 1000 typed.length <= 1000 name 和 typed 的字符都是小写字母。
【思路】
使用两个指针i和j分别遍历name和typed数组,当name[i]和typed[j]相同或者typed[j]和typed[j-1]相同,则继续下一轮判断,否则返回False。
【代码】
python版本
class Solution(object):
def isLongPressedName(self, name, typed):
"""
:type name: str
:type typed: str
:rtype: bool
"""
if len(name) > len(typed):
return False
if len(name) == :
if len(typed) == :
return True
return False
# name[i]和typed[j]字符相同,或者typed[i]和typed[i-1]字符相同
i =
j =
while i < len(name) and j < len(typed):
if name[i] == typed[j]:
i +=
j +=
elif typed[j] == typed[j-1]:
j +=
else:
return False
# 循环结束,分为i<len(name)和j<len(typed)两种情况
if i < len(name):
return False
while j < len(typed):
if typed[j] == typed[j-1]:
j +=
else:
return False
return True
C++版本
class Solution {
public:
bool isLongPressedName(string name, string typed) {
if(name.size() > typed.size())
return false;
if(name.size() == ){
if(typed.size() == )
return true;
else
return false;
}
// 遍历,name[i]和typed[j]相同,或者typed[j]和typed[j-1]相同
int i=, j=;
while(i < name.size() && j < typed.size()){
if(name[i] == typed[j]){
i++, j++;
}else{
if(typed[j] == typed[j-1])
j++;
else
return false;
}
}
// 遍历结束,name或者typed还有元素未遍历
if(i < name.size())
return false;
while(j < typed.size()){
if(typed[j] == typed[j-1])
j++;
else
return false;
}
return true;
}
};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android | okhttp细枝篇
- valgrind测试报告分析
- 深度学习Pytorch检测实战 - Notes - 第5章 单阶多层检测器:SSD
- Java+selnium 智能等待,try catch方法智能定位需添加等待的元素
- Python中的命名空间和作用域(2)
- C/C++可以用正则表达式吗?
- typescript实战总结之实现一个互联网黑白墙
- 文件上传漏洞演示(一句话木马文件 + 蚁剑)
- [Bazel]构建Golang项目
- 2020--IDEA破解失败后无法打开(mac/win)【已解决】
- CPU:别再拿我当搬砖工!
- 7类 登录/注册 安全漏洞
- 安全弹出你的移动设备,保护数据安全!
- burpsuite系列
- idea_Maven_setting文件依赖源国内镜像